FeaturedShell-ScriptingTutorials

Batch-Datei: Befehle nacheinander ausführen – so geht’s

In Windows gibt es 4 verschiedene Möglichkeiten, wie man in einer Batch-Datei Befehle nacheinander ausführen kann. In diesem kostenlosen Tutorial stelle ich alle 4 Möglichkeiten mit Praxis-Beispielen vor.

  1. Verknüpfung mit & (Ampersand)
    Mit einem & kann man in einer Batchzeile zwei Befehle verknüpfen. Der zweite Befehl wird ausgeführt, sobald der erste abgeschlossen ist – unabhängig davon, ob er erfolgreich abgeschlossen wurde, oder nicht.
  2. Verknüpfung mit && (2 Ampersand)
    Mit dem Verknüpfungsoperator && können zwei Befehle so verknüpft werden, dass der zweite nur dann ausgeführt wird, wenn der erste Befehl erfolgreich ausgeführt wurde.
  3. Verknüpfung mit || (2 x Pipe)
    Wenn man zwei Befehle mit dem Operator || verknüpft, wird der zweite Befehl nur ausgeführt, wenn der erste mit Fehlern beendet wurde. Das eignet sich zum Beispiel für die Ausgabe von Fehlermeldungen.
  4. Zeilenweise Auflistung
    Man schreibt jeden Befehl in eine einzelne Zeile der Batch-Datei. Die Befehle werden dann vom Windows-Befehlsprozessor nacheinander ausgeführt.

Wie sieht das nun in der Praxis aus?

Praxis-Beispiel 1: Zeilenweise Auflistung der Batch-Befehle

Der einfachste Weg Batchbefehle der Reihe nach auszuführen ist, sie zeilenweise in eine Batch-Datei zu schreiben. Beispiel:

cd %USERPROFILE%
echo Test >> test.txt

Wenn wir diese zwei Befehlszeiten in eine Datei namens test.bat schreiben und diese Datei ausführen, wechselt die Kommandozeile in unser persönliches Benutzerverzeichnis und hängt dort an die Datei test.txt die Zeile “Test“ an. Wenn test.txt nicht existiert, wird die Datei angelegt.

Praxis-Beispiel 2: Batch-Befehle nacheinander ausführen mit dem &-Operator

Eine weitere Möglichkeit, um Windows-Befehle zu verknüpfen ist der &-Operator. Hierzu ein Beispiel:

cd &USERPROFILE% & echo Test >> test.txt

Dieser Befehl bewirkt das Gleiche, wie die zwei Befehlszeilen in unserem ersten Beispiel – wurde jedoch in einer einzigen Zeile zusammengefasst.

Bei einer zeilenweisen Abarbeitung von Batchbefehlen und bei der Verwendung des &-Operators muss man wissen, dass die nachfolgenden Befehle immer ausgeführt werden – unabhängig davon, ob der vorangegangene Befehl erfolgreich abgearbeitet wurde, oder nicht.

Beispiel:

Angenommen, wir möchten eine Erfolgsmeldung ausgeben, wenn wir eine bestimmte Website anpingen können. Die Meldung soll jedoch nicht ausgegeben werden, wenn die Website nicht erreichbar ist. Folgender Versuch bringt uns dann nicht das gewünschte Ergebnis:

ping www.dasrosakaninchen-asdf123.de
echo Die Seite ist erreichbar.

Obwohl die Seite www.dasrosakaninchen-asdf123.de nicht erreichbar ist, erhalten wir die Ausgabe “Die Seite ist erreichbar.“ Diese Herangehensweise führt uns also nicht zum Ziel.

Praxis-Beispiel 3: Batch-Befehle nacheinander ausführen – nur, wenn erster Befehl erfolgreich

Eine Möglichkeit um zu überprüfen, ob der vorangegangene Befehl erfolgreich ausgeführt wurde ist das sogenannte IF Statement. Wir könnten unsere Batch-Datei aus Beispiel 1 so umschreiben:

ping www.dasrosakaninchen-asdf123.de
IF %ERRORLEVEL% = 0 (
    echo Die Seite ist erreichbar.
)

Wenn wir diese Batchdatei ausführen (und www.dasrosakaninchen-asdf123.de ist nicht erreichbar), dann erhalten wir auch keine Erfolgsmeldung. Genauso wie wir es möchten. Ob das Script wirklich richtig funktioniert, können wir testen, in dem wir www.dasrosakaninchen-asdf123.de durch eine Seite ersetzen die sehr zuverlässig erreichbar ist – z. B. www.google.de

Allerdings besteht dieses Beispiel aus 4 Zeilen. Wir möchten jedoch innerhalb einer Zeile das gleiche Ziel erreichen.

Wie kann man in einer Zeile zwei Batch-Befehle nacheinander ausführen, jedoch den zweiten nur dann, wenn der erste Befehl erfolgreich war?

Dazu gibt es den &&-Operator (2 Ampersand). Um zu sehen, wie wir diesen Operator einsetzen können, bauen wir das obige Beispiel zu einem Einzeiler um, und wir verwenden www.google.de damit wir auch einmal eine Erfolgsmeldung erhalten:

ping www.google.de && echo Die Seite ist erreichbar.

Diese Einzeiler lassen sich auch einfach innerhalb der Windows-Eingabeaufforderung eingeben, ohne dass man den Umweg über ein Batchfile gehen muss.

Der &&-Operator ist also eine einfache Lösung, um innerhalb einer Zeile mehrere Batch-Befehle nacheinander auszuführen und das nur, wenn der jeweils vorangegangene Befehl erfolgreich war.

Unser viertes und letztes Praxis-Beispiel zeigt den gegenteiligen Fall:

Praxis-Beispiel 4: Batch-Befehle nacheinander ausführen – der zweite Befehl soll nur ausgeführt werden, wenn der erste nicht erfolgreich war.

In diesem Beispiel möchten wir eine Meldung ausgeben, wenn eine bestimmte URL nicht erreichbar ist. Dazu verwenden wir den ||-Operator (2-fach Pipe, oder Doppelpipe).

Beispiel:

ping www.dasgelbenilpferdimsalat.de || echo Das gelbe Nilpferd ist nicht erreichbar.

Wenn die Seite www.dasgelbenilpferdimsalat.de nicht erreichbar ist, erhalten wir die Ausgabe: “Das gelbe Nilpferd ist nicht erreichbar.“

Zusammenfassung

In diesem Tutorial haben wir 4 Möglichkeiten kennengelernt, wie man in einer Windows-Batch-Datei Befehle nacheinander ausführen kann:

  • die zeilenweise Auflistung von Befehlen
  • die bedingungslose Verknüpfung mit dem &-Operator
  • die Verknüpfung mit dem &&-Operator, die nur dann den zweiten Befehl ausführt, wenn der erste Befehl erfolgreich war, und
  • die Verknüpfung mit dem ||-Operator, bei der der zweite Befehl nur ausgeführt wird, wenn der erste mit Fehlern abgeschlossen wurde

Auch interessant

Weiterführendes Material

René Pöpperl

Seit 2010 arbeite ich als Softwareentwickler. Mein hauptsächlichen Interessen liegen in gut durchdachtem UI-Design und hoher Code-Qualität.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Consent Management Platform von Real Cookie Banner