以下程序总是在最后回显“machine-abc”:
@echo Off
set dropLoc=machine-abc
IF %computername% == "xyz" (
%dropLoc% = machine-xyz
)
echo %dropLoc%
这是范围问题吗? if语句中的dropLoc变量的作用域是否不同?我已尝试以下方法解决该问题:
@echo Off
set dropLoc=machine-abc
IF %computername% == "xyz" (
!dropLoc! = machine-xyz
)
echo %dropLoc%
和
@echo Off
set dropLoc=machine-abc
IF %computername% == "xyz" (
set dropLoc = machine-xyz
)
echo %dropLoc%
我该如何工作?
最佳答案
您是第一次正确使用SET
语法,为什么又决定第二次编写其他内容?另外,您必须在比较的两边都加上引号。与其他脚本解释器不同,对于批处理解释器,引号并不特殊。
@echo off
rem Change this for testing, remove for production
set computername=xyz
set dropLoc=machine-abc
if "%computername%" == "xyz" (
set dropLoc=machine-xyz
)
echo %dropLoc%