« SET /Pはパイプをうまく読めない。(障害) | トップページ | ZIPファイルを作成/追加/置換するバッチファイル »

2007年4月 6日 (金)

FORコマンドからの途中脱出

(1) バッチファイル内のFORコマンドからの途中脱出は、
GOTO ラベル

複文内にラベルは置けません。
なのでGOTO文は必然的に途中脱出になります。
ただし、途中脱出後もDO部が空ECHOされます。変なの。

for /l %%k in (1,1,10) do (
if %%k==5 goto :next
echo %%k
)
:next

(2) パイプ前後のFORコマンドからの途中脱出は、
EXIT

パイプ前後のコマンドは、CMD/Cの子CMDプロセスで実行されるので、
GOTO文は書けませんが、逆にEXITは書けます。

more|for /l %%k in (1,1,10) do (
(if %%k==5 exit)
echo %%k
)

(3) バッチファイル外のFORコマンドからの途中脱出は、
CMD /S /Cで実行して、EXIT

バッチファイル外では、ラベルやGOTO文は無効です。

cmd /s /c "for /l %k in (1,1,10) do ((if %k==5 exit)& echo %k)"

« SET /Pはパイプをうまく読めない。(障害) | トップページ | ZIPファイルを作成/追加/置換するバッチファイル »