I'm trying to chain a series of .bat files using the EXIT /B X
command to return success or failure and &&
and ||
for conditional running of the next .bat (e.g. a.bat && b.bat
).
Regardless of whether I call EXIT /B 0
or anything else to end a.bat, a.bat && b.bat
will call b.bat afterward. My understanding is that EXIT /B 0
should set ERRORLEVEL=0
, which is success, so the &&
should continue. The counterpoint to this is that calling EXIT /B 1
should set ERRORLEVEL=1
which is failure, so the &&
should stop. What am I missing here?
Trivialized example:
For non-batch commands, acting as expected:
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
Using EXIT /B
always sees a.bat as successful:
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
How can I exit from a.bat so that a.bat && b.bat
and a.bat || b.bat
behave as expected?
All commands are run in cmd.exe on Windows XP SP3.
the page you requested cannot be found
(but three upvotes suggest, it's just me...) Another description is on SS64 – Garay