簡體   English   中英

計數器不會在Windows批處理文件中的FOR循環內使用IF語句遞增

[英]Counter not incrementing with IF statement inside FOR loop in Windows 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!
)

我遇到了一個奇怪的問題,其中, sitecounts變量(我的計數器)實際上每個循環正確遞增(我通過用最后一個語句回顯計數來證明這一點) - 但是在下一次迭代時%sitecounts%仍顯示它的值為'1',這是初始值。

如果我將代碼更改為:

IF !sitecounts! == ...

...然后IF語句似乎將該值視為純TEXT! 我已經設置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不起作用,因為它不是數值表達式:

    / A開關指定等號右側的字符串是計算的數值表達式。

    只是省略開關( /p不會工作,這是一個提示)

可能錯誤就在這一行

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

您正在設置字符串而不是數字表達式 (設置/ a),然后更改為

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM