遅延環境変数が無効(デフォルトの状態)
遅延環境変数が無効であれば、繰り返し毎に変数は変更されません。FOR /L %%i IN (1,1,3) DO ( SET value=%%i ECHO %TIME% %value% TIMEOUT /T 1 )<実行結果>
9:31:34.61 3
9:31:34.61 3
9:31:34.61 3
時刻、カウンタともに変わらない。
遅延環境変数が有効
遅延環境変数を有効(SETLOCAL ENABLEDELAYEDEXPANSION)
にすると、繰り返し毎に変数が変更されるようになります。SETLOCAL ENABLEDELAYEDEXPANSION FOR /L %%i IN (1,1,3) DO ( SET value=%%i ECHO !TIME! !value! TIMEOUT /T 1 ) ENDLOCAL<実行結果>
9:31:37.16 1
9:31:38.13 2
9:31:39.21 3
毎回異なっている。
FOR 以外の繰り返し
遅延環境変数が無効(SETLOCAL DISABLEDELAYEDEXPANSION)
であっても、FOR を使わない繰り返しであれば変数は毎回変更されます。SETLOCAL DISABLEDELAYEDEXPANSION :LOOP IF %value% GEQ 6 GOTO :EOF SET /A value=%value% + 1 ECHO %TIME% %value% TIMEOUT /T 1 GOTO :LOOP ENDLOCAL<実行結果>
9:31:40.22 4
9:31:41.20 5
9:31:42.19 6
毎回異なっている。