【发布时间】:2012-05-04 17:55:54
【问题描述】:
我正在创建的批处理文件中有一个简单的 FOR 循环,但它的工作方式与我期望的不太一样。 FOR 循环遍历文本文件的行,在每次迭代中,我使用 IF 语句对当前行进行快速比较,如果结果为真,则做一些工作。代码如下:
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!
)
我遇到了一个奇怪的问题,sitecounts 变量(我的计数器)实际上随着每个循环正确递增(我通过用最后一条语句回显计数来证明这一点)——但是在下一次迭代中,%sitecounts% 仍然显示它的值为 '1',这是初始值。
如果我将代码更改为:
IF !sitecounts! == ...
...那么 IF 语句似乎将该值视为纯文本!我已将 ENABLEDELAYEDEXPANSION 设置为处理循环内的变量,但不确定下一步该做什么。任何帮助表示赞赏!
【问题讨论】:
-
可能值得学习 PowerShell。 Windows BAT 文件非常有限。
-
虽然 powershell 可能值得学习,但 Windows 批处理脚本很容易完成这项任务。
标签: windows scripting batch-file