gpt4 book ai didi

windows - Windows 批处理文件中 FOR 循环内的 IF 语句不增加计数器

转载 作者:可可西里 更新时间:2023-11-01 09:30:49 26 4
gpt4 key购买 nike

我正在创建的批处理文件中有一个简单的 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 设置为处理循环内的变量,但不确定下一步该做什么。任何帮助表示赞赏!

最佳答案

这次我真的测试了....

换行

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 不起作用,因为它不是数值表达式:

    The /A switch specifies that the string to the right of the equal sign is a numerical expression that is evaluated.

    只需省略开关(/p 也不会起作用,那是为了提示)

关于windows - Windows 批处理文件中 FOR 循环内的 IF 语句不增加计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10453804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com