批处理文件集变量不起作用

Ric*_*fer 23 variables batch-file set

我在BAT文件中做一些简单的变量设置.它不是设置变量.没有任何奇怪的结构,它是使用相同变量名的简单变量替换.我将BAT文件简化为一个简单的概念证明版本:

set TESTVAR = "No Value"
ECHO var = %TESTVAR%
set TESTVAR = ""
ECHO var = %TESTVAR%
set TESTVAR = "New value"
ECHO var = %TESTVAR%
Run Code Online (Sandbox Code Playgroud)

并且输出显示没有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>
Run Code Online (Sandbox Code Playgroud)

我希望第一个和第三个ECHO命令显示"无值"和"新值"值.到底他妈发生了什么?

Dev*_*ate 39

问题是等号周围的空间.这应该做你想要的.

set TESTVAR="No Value"
ECHO var = %TESTVAR%
set TESTVAR=""
ECHO var = %TESTVAR%
set TESTVAR="New value"
ECHO var = %TESTVAR%
Run Code Online (Sandbox Code Playgroud)