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

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

4

1 回答 1

2

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

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

另请注意:

set abc = ZZZ.bat

不创建变量,它创建一个变量并将其设置为,根据:abcabcspacespaceZZZ.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.

你会看到我已经删除了=角色周围的空格来解决这个问题。

于 2018-04-06T04:21:15.947 回答