在“if”块中设置变量

时间:2011-10-18 10:05:11

标签: windows batch-file if-statement cmd

以下程序最终总是回应“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%

我如何使这项工作?

1 个答案:

答案 0 :(得分:22)

第一次你有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%