EXIT /B Xコマンドを使用して一連の .bat ファイルを連鎖させ、成功または失敗を返し、次の .bat&&を||条件付きで実行しようとしています(例: a.bat && b.bat)。
EXIT /B 0a.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 で実行されます。