Gibt es ein "set -e" für ein DOS-Batch-Skript?

8

In bash "set -e" am Anfang des Skripts weist bash an, das gesamte Skript beim ersten Fehlschlag eines Befehls im Inneren auszufallen.

Wie mache ich das gleiche für ein Windows-Batch-Skript?

    
mark 13.12.2012, 11:55
quelle

2 Antworten

5

Nicht direkt, aber Sie können Folgendes zu jeder Zeile hinzufügen, die etwas auszuführen hat.

%Vor%

Und dann Fehler definieren, der das Skript stoppt.

%Vor%     
Tuim 13.12.2012, 11:58
quelle
13

Tuims Lösung funktioniert, aber sie kann noch einfacher gemacht werden.

Der ERRORLEVEL ist bereits gesetzt, daher muss GOTO nicht mit einem Label versehen werden, das den ERRORLEVEL setzt.

Sie können einfach

verwenden %Vor%

Beachten Sie, dass exit / b nur die aktuelle Subroutine beendet, wenn Sie sich mitten in einem CALL befinden. Ihr Skript muss jeden CALL Schicht für Schicht beenden, bis der Stamm des Skripts erreicht ist. Dies geschieht automatisch, solange Sie den Test nach jeder CALL-Anweisung einfügen.

%Vor%

Es ist möglich, zu erzwingen, dass ein Stapelscript sofort von jeder CALL-Tiefe beendet wird. Siehe Wie kann ich eine Batch-Datei innerhalb einer Funktion? für weitere Informationen. Achten Sie darauf, beide Antworten zu lesen. Die akzeptierte Antwort hat einige potentiell schwerwiegende Nachteile.

    
dbenham 13.12.2012 15:44
quelle

Tags und Links