以下程序总是在最后回显“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%

10-04 16:24