[英]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.