EXIT /B X
コマンドを使用して一連の .bat ファイルを連鎖させ、成功または失敗を返し、次の .bat&&
を||
条件付きで実行しようとしています(例: a.bat && b.bat
)。
EXIT /B 0
a.bat を終了するために呼び出すかどうかに関係なく、後で b.bata.bat && b.bat
を呼び出します。私の理解では、EXIT /B 0
を設定する必要があります。ERRORLEVEL=0
これは成功であり、&&
続行する必要があります。これとは対照的に、呼び出しはどちらが失敗したEXIT /B 1
かを設定する必要があるため、呼び出しは停止する必要があります。ここで何が欠けていますか?ERRORLEVEL=1
&&
簡単な例:
非バッチ コマンドの場合、期待どおりに動作します。
C:\> echo test|findstr test>NUL && echo yes
yes
C:\> echo test|findstr test>NUL || echo yes
C:\> echo test|findstr nope>NUL && echo yes
C:\> echo test|findstr nope>NUL || echo yes
yes
を使用するEXIT /B
と、常に a.bat が成功したと見なされます。
C:\> echo @EXIT /B 0 > a.bat
C:\> a.bat && echo yes
yes
C:\> a.bat || echo yes
C:\> echo @EXIT /B 1 > a.bat
C:\> a.bat && echo yes
yes
C:\> a.bat || echo yes
a.bat を終了して期待どおりa.bat && b.bat
にa.bat || b.bat
動作させるにはどうすればよいですか?
すべてのコマンドは、Windows XP SP3 の cmd.exe で実行されます。