Beenden Stapel mit EXIT /B-X`, wo X>=1 wirkt, wie wenn Befehl erfolgreich abgeschlossen, wenn mit && oder || Operatoren zwischen batch-Aufrufe

Ich versuche, die Kette eine Reihe von .bat-Dateien mit der EXIT /B X Befehl ein, um den Erfolg oder Misserfolg und die && und || für die bedingte Ausführung der next .bat (z.B. a.bat && b.bat).

Unabhängig davon, ob ich anrufen EXIT /B 0 oder irgendetwas anderes zu Ende.Fledermaus, a.bat && b.bat ruft b an.Fledermaus hinterher. Mein Verständnis ist, dass EXIT /B 0 sollte ERRORLEVEL=0was ist Erfolg, so dass die && fortgesetzt werden soll. Das Gegenstück zu diesem ist, dass der Aufruf EXIT /B 1 sollte ERRORLEVEL=1 die Fehler, so dass die && sollte aufhören. Was vermisse ich hier?

Verharmlost Beispiel:

Für nicht-batch-Befehle, als erwartet:

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

Mit EXIT /B immer sieht.Fledermaus so erfolgreich:

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

Wie kann ich den Ausstieg aus einem.Fledermaus, so dass a.bat && b.bat und a.bat || b.bat Verhalten wie erwartet?

Alle Befehle ausgeführt werden cmd.exe auf Windows XP SP3.

InformationsquelleAutor der Frage Jordan Evens | 2011-01-08

Schreibe einen Kommentar