私が作成しているバッチファイルの中に単純なFORループがあり、期待通りの動作をしていません。 FORループはテキストファイルの行を繰り返し処理し、各繰り返しでIF文を使用して現在の行を簡単に比較し、真と評価されればいくつかの作業を行います。ここでは、コードは次のようになります。Windowsのバッチファイル内の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バッチスクリプトは簡単にこのタスクに対応します。 – RobW