我在创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,但不知道下一步该怎么做。 任何帮助表示赞赏!
在linux bash脚本中恢复
在所有行中添加文本
如何在父shell和子shell之间使用相同的bashvariables
在locking或解锁Windows XP时运行脚本
等同于Windows中的Unix eval
testingsystemd单元是否在bash脚本中处于活动状态
捕获bash命令的输出,parsing并存储到不同的bashvariables中
如何防止Windows在构build解决scheme时进入睡眠状态?
这次我真的测试过了….
改变线
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开关指定等号右侧的字符串是一个数值表达式,该数值表达式将被计算。
IF %sitecounts% == %input% (set /a selectedsitepath=%logfilepath%W3SVC%%H)
你正在设置一个字符串不是一个数字表达式 (set / a),然后改变为
IF !sitecounts! == %input% (set selectedsitepath=%logfilepath%W3SVC%%H) ^ ^ ^
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。