我对Windows批处理文件很陌生,所以我确定这个问题有一个明显的答案,但我已经在网上挖掘了几个小时,而且我们无法找到它。 当我运行以下批处理文件时,为什么不输出"它有效!" ?
@echo OFF
SET /A _Converted="0"
SET _Converted
IF _Converted==0 (echo It worked!) ELSE (echo it didn't work)
输出:
_Converted=0
it didn't work
但有时候(我不确定如何重现),它会输出:
Environment variable _Converted not defined
以下是我尝试的内容:
SET
vs SET /A
SET /A "_Converted=0"
与SET /A _Converted="0"
)
"如果您使用任何逻辑或模数运算符,则需要将表达式字符串括在引号中。" 答案 0 :(得分:0)
在检查其值之前,将%放在变量周围。如果在循环中使用延迟扩展
正如@Aacini在评论中提到的,以下打印“它有效!”:
@echo OFF
SET /A _Converted="0"
SET _Converted
IF %_Converted%==0 (echo It worked!) ELSE (echo it didn't work)
问题在于我的原始问题是在for循环中,并且在将其移动到更简单的批处理文件中以尝试隔离问题之前,我使用了IF
语句。所以我的修复方法是将此答案与delayed variable expansion结合起来。