批处理文件中未设置变量

时间:2018-04-06 04:13:36

标签: batch-file delayedvariableexpansion

setlocal enabledelayedexpansion
If "%computername%"=="USER-PC" (
    set abc = ZZZ.bat
    echo %abc%
    pause
)

这里abc总是显示空白。可能的原因是什么?

1 个答案:

答案 0 :(得分:2)

你已经中途,因为你已经启用了延迟扩展。但是,延迟展开使用!字符而不是%,因此您需要的是:

setlocal enabledelayedexpansion
if "%computername%"=="USER-PC" (
    set abc=ZZZ.bat
    echo !abc!
    pause
)

另请注意:

set abc = ZZZ.bat

创建abc变量,它会创建一个abcspace变量并将其设置为spaceZZZ.bat,具体如下:

C:\Users\pax> set abc = 1
C:\Users\pax> echo .%abc%.
.%abc%.
C:\Users\pax> echo .%abc %.
. 1.
C:\Users\pax> set xyz=1
C:\Users\pax> echo .%xyz%.
.1.

您会看到我已删除=字符周围的空格以解决此问题。