2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« 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ファイルを作成/追加/置換するバッチファイル »