批处理文件设置变量无效

28

我正在BAT文件中进行一些简单的变量设置。 但它没有设置这个变量。 没有任何奇怪的构造,它只是使用相同的变量名进行简单的变量替换。 我将BAT文件简化为一个简单的概念验证版本:

set TESTVAR = "No Value"
ECHO var = %TESTVAR%
set TESTVAR = ""
ECHO var = %TESTVAR%
set TESTVAR = "New value"
ECHO var = %TESTVAR%

输出显示似乎没有任何SET命令能够工作。我在这里缺少什么?我写BAT文件已经好几年了,但我以前从来没有见过这种情况。以下是运行此测试时的输出:

C:\Users\rs02130\Desktop>test

C:\Users\rs02130\Desktop>set TESTVAR = "No Value"

C:\Users\rs02130\Desktop>ECHO var =
var =

C:\Users\rs02130\Desktop>set TESTVAR = ""

C:\Users\rs02130\Desktop>ECHO var =
var =

C:\Users\rs02130\Desktop>set TESTVAR = "New value"

C:\Users\rs02130\Desktop>ECHO var =
var =
C:\Users\rs02130\Desktop>

我希望第一个和第三个ECHO命令显示的值是 "No Value" 和 "New value"。这到底是怎么回事?


16
没有人说过,你应该在Testvar和等号之间放置空格。 - jeb
不太确定,但也许你需要启用EnableDelayedExpansion - mavrosxristoforos
9
等号周围的空格 <叹气> ...我知道这很愚蠢。谢谢。 - Richard Schaefer
我刚刚做了同样的事情。太蠢了。 - Kathy Lori
1个回答

47
问题在于等号周围的空格。这应该可以做到您想要的效果。
set TESTVAR="No Value"
ECHO var = %TESTVAR%
set TESTVAR=""
ECHO var = %TESTVAR%
set TESTVAR="New value"
ECHO var = %TESTVAR%

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接