在“if”块中设置variables

下面的程序最后总是回应“machine-abc”:

@echo Off set dropLoc=machine-abc IF %computername% == "xyz" ( %dropLoc% = machine-xyz ) echo %dropLoc% 

这是一个范围问题? if语句中的dropLocvariables是否有不同的作用域? 我已经尝试了以下来解决这个问题:

 @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%