さて、久しぶりの謎シリーズ(?)。
echo off しない状態で、以下のバッチを実行すると、
for %%A in (1,2,3) do echo %%A&if %%A==2 goto :eof
当然ながら、
C:\WINDOWS\TEMP>for %A in (1 2 3) do echo %A & if %A == 2 goto :eof C:\WINDOWS\TEMP>echo 1 & if 1 == 2 goto :eof 1 C:\WINDOWS\TEMP>echo 2 & if 2 == 2 goto :eof 2
という結果になる。で、
for /L %%A in (1,1,3) do echo %%A&if %%A==2 goto :eof
だと、同じ結果と思うところだが、
C:\WINDOWS\TEMP>for /L %A in (1 1 3) do echo %A & if %A == 2 goto :eof C:\WINDOWS\TEMP>echo 1 & if 1 == 2 goto :eof 1 C:\WINDOWS\TEMP>echo 2 & if 2 == 2 goto :eof 2 C:\WINDOWS\TEMP>echo 3 & if 3 == 2 goto :eof
となる。%Aが3の時は実行はされないが、画面にエコーだけはされる。不思議だ。
こういう処理になる理由が全く思い浮かばない。
ちなみに、
@echo off echo %TIME% for /L %%A in (1,1,1000000) do goto skip :skip echo %TIME%
を実行してみると、それなりに時間が掛かる。