计数器不会在Windowsbatch file中用FOR循环中的IF语句递增

我在创build的batch file中有一个简单的FOR循环,这并不像我期望的那样工作。 FOR循环遍历一个文本文件的行,并且在每次迭代中,我使用一个IF语句对当前行进行快速比较,如果计算结果为true,则执行一些工作。 这里是代码:

SETLOCAL ENABLEDELAYEDEXPANSION set /a sitecounts=1 set /a input=34 FOR /F "tokens=1,2 delims=^/" %%G IN (file.txt) DO ( IF %sitecounts% == %input% (set /a selectedsitepath=%logfilepath%W3SVC%%H) set /a sitecounts=!sitecounts!+1 echo !sitecounts! ) 

我遇到一个奇怪的问题,其中sitecountsvariables(我的计数器)实际上递增正确与每个循环(我通过回应计数与最后一个语句certificate这一点) – 但在下一次迭代%sitecounts%仍然显示它的值是'1',这是初始值。

如果我将代码更改为:

 IF !sitecounts! == ... 

… IF语句似乎将该值视为纯文本! 我已经设置ENABLEDELAYEDEXPANSION来处理循环内的variables,但不知道下一步该怎么做。 任何帮助表示赞赏!

Solutions Collecting From Web of "计数器不会在Windowsbatch file中用FOR循环中的IF语句递增"

这次我真的测试过了….

改变线

 IF %sitecounts% == %input% (set /a selectedsitepath=%logfilepath%W3SVC%%H) 

 IF !sitecounts! == %input% (set selectedsitepath=%logfilepath%W3SVC%%H) 
  • %sitecounts%需要!sitecounts! 为了被评估
  • set /a selectedsitepath=%logfilepath%W3SVC%%H不起作用,因为它不是数字表达式:

    / A开关指定等号右侧的字符串是一个数值表达式,该数值表达式将被计算。

    只要省略开关( /p不会不工作,这是一个提示)

可能错误在这一行

 IF %sitecounts% == %input% (set /a selectedsitepath=%logfilepath%W3SVC%%H) 

你正在设置一个字符串不是一个数字表达式 (set / a),然后改变为

 IF !sitecounts! == %input% (set selectedsitepath=%logfilepath%W3SVC%%H) ^ ^ ^