for /L の謎

さて、久しぶりの謎シリーズ(?)。
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%

を実行してみると、それなりに時間が掛かる。