如何在Windows批处理文件中的for循环中设置和检查布尔变量?

时间:2015-06-18 20:19:53

标签: windows batch-file

我对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""如果您使用任何逻辑或模数运算符,则需要将表达式字符串括在引号中。"
  • 我的问题是for循环,但我可以在循环之外重现问题所以我不认为delayed variable expansionthis question帮助我,即使他们最初看起来很相似。

1 个答案:

答案 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结合起来。