Teil 1: Allgemeine Problemstellungen

Shell Scripting unter Windows

Shell Script bei Fehler beenden

Das obige Beispiel ist auch ein guter Ausgangspunkt für den kontrollierten Ausstieg bei einer nicht erfüllten Anforderung. Angenommen, ein Batch soll beendet werden, wenn ein bestimmter Prozess auf einer Maschine nicht läuft. Dann lässt sich dies wie im nachfolgenden Batch als Prüfcode vor der eigentlichen Funktionalität einbauen.

@echo off
:: ende bei keinem Parameter
if x%1 == x (echo Kein Prozessname angegeben) & goto
:eof
:: test auf prozess
tasklist /FI "imagename eq %1" /NH | find /i "%1" > nul
|| goto :eof
echo Prozess %1 läuft.
:: ab hier restlicher code ...

StdErr für die Fehlererkennung benutzen

Viele Kommandos, mit denen innerhalb der Windows-Shell gearbeitet wird, geben ihre Ausgaben tatsächlich auf zwei verschiedenen Kanälen aus. Der eine ist die Standardausgabe (stdout, Kanalnummer 1), der andere der Standardfehlerkanal (stderr, Kanalnummer 2). Damit können Sie sehr einfach feststellen, ob ein Kommando problemlos ausgeführt wurde oder nicht. Falls die angelegte Datei größer ist als 0 Bytes, ist ein Fehler aufgetreten.

xcopy *.* g:\daten\backup\*.* /Y 2> error.txt

Enthält die Datei error.txt nach der Ausführung keine Daten (die Dateigröße beträgt 0 Byte), wurde das Kommando ohne Fehler beendet.