遅延環境変数が無効(デフォルトの状態)
遅延環境変数が無効であれば、繰り返し毎に変数は変更されません。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
毎回異なっている。