いまさら知ったfor変数

for %%A in (A B C D E) do call :sub
goto :EOF

:sub
for %%B in (1 2 3 4 5) do echo %%A-%%B

レキシカルには :sub は、for %%A のループの外だが、%%A が参照できる!
今まで、引数で渡してました。なんてことだ。


しかし、goto すると %%B だけでなく %%A も参照できなくなる。
まあ、これはしょうがない。

@echo off
for %%A in (A B C D E) do call :sub
goto :EOF

:sub
for %%B in (1 2 3 4 5) do (
  echo %%A-%%B
  goto foo
)
:foo
echo %%A-%%B