Batch-Programmierung: Batch-Operatoren
Befehlsverkettung: mehrere Batch-Befehle in einer Zeile können hintereinander ausgeführt werden
Syntax
befehl1 & befehl2
Stapelanweisung: Ab ? bis Windows 7 (geht auch unter Windows 10)
Beispiel:
Inhalt
echo Hallo! & echo und Tschüss!
Ausgabe
Hallo! und Tschüss!
Befehlsverkettung mittels "pipe": der zweite Befehl bekommt die Ausgabe des ersten Befehls als Eingabe
Syntax
befehl1 | befehl2
Stapelanweisung: Ab DOS (nur für more als zweiter Befehl); allgemein verwendbar ab WindowsNT bis Windows 7
Beispiel:
Inhalt
type test.txt | more
Ausgabe
Zeile 1 Zeile 2 ... Zeile 24 -- More --
(nach Drücken einer beliebigen Taste werden die nächsten Zeilen angezeigt)
&&
Bearbeitenbedingte Befehlsverkettung: der zweite Befehl wird nur ausgeführt, wenn der erste Befehl erfolgreich war
Syntax
befehl1 && befehl2
Stapelanweisung: Ab ? bis Windows 7
Beispiel:
Inhalt
copy test.txt test2.txt && echo Kopieren erfolgreich!
Ausgabe
Kopieren erfolgreich!
(falls test.txt existiert und nach test2.txt kopiert werden konnte)
||
Bearbeitenbedingte Befehlsverkettung: der zweite Befehl wird nur ausgeführt, wenn der erste Befehl fehlschlug
Syntax
befehl1 || befehl2
Stapelanweisung: Ab ? bis Windows 7 (geht auch unter Windows 10)
Beispiel:
Inhalt
copy test.txt test2.txt || echo Fehler beim Kopieren!
Ausgabe
Fehler beim Kopieren!
(falls test.txt nicht existiert oder test2.txt nicht geschrieben bzw. überschrieben werden konnte)
als Erweiterung:
copy test.txt test2.txt && echo Kopieren erfolgreich || echo Fehler beim Kopieren
Ausgabe
falls Kopieren erfolgreich war: Kopieren erfolgreich falls Kopieren nicht erfolgreich war: Fehler beim Kopieren
Umleitung der Eingabe
Syntax
befehl < file
Beispiel:
Inhalt
echo Hallo! > tmp.txt set /P v= < tmp.txt echo %v%
Ausgabe
Hallo!
(set /P v=
würde eine Zeile vom Bediener erwarten; durch die Umleitung wird diese Zeile von der Datei tmp.txt gelesen, die zuvor mittels Umleitung der Ausgabe (siehe unten) befüllt wurde.)
Umleitung der (Standard-)Ausgabe zu einem anderen Ziel. Wenn das Ziel eine Datei ist, wird diese neu angelegt (falls die Datei schon existiert, wird sie zuvor gelöscht) Es kann aber auch nach NUL(Die Ausgabe verschwindet) oder CON(Bildschirm) umgeleitet werden
Syntax
befehl > file
oder auch mit vorangestellter Umleitung (praktisch wenn bei der Ausgabe einzelne " vorkommen)
> file befehl
Beispiel:
Inhalt
echo Hallo! > tmp.txt type tmp.txt
Ausgabe
Hallo!
Neben der Standard-Ausgabe (stdout) gibt es noch eine Fehlerausgabe (stderr). Normalerweise landen die Standard-Ausgabe und die Fehler-Ausgabe am Bildschirm, wodurch der Unterschied nicht auffällt. Wenn die Standard-Ausgabe auf eine Datei umgelenkt wird, landen Fehlerausgaben immer noch auf dem Bildschirm, was oft erwünscht ist.
Falls nicht, kann auch die Fehler-Ausgabe in eine Datei umgeleitet werden, und zwar mit 2>
.
Beispiel:
dir >stdout.txt 2>stderror.txt
Schreibt den Output des dir
Befehles in die Datei stdout.txt, da kein Fehler aufgetreten ist.
dir DieseDateiExistiertNicht.txt >stdout.txt 2>stderror.txt
Schreibt die Fehlermeldung des dir
Befehles in die Datei stderror.txt, da die Datei DieseDateiExistiertNicht.txt nicht existiert und somit ein Fehler auftritt.
Wenn die Fehlerausgabe in die gleiche Datei wie die Standardausgabe umgeleitet werden soll, hängt man noch 2>&1
an.
Beispiel:
type EineDatei.txt > UmgeleiteteAusgabe.txt 2>&1
Der Inhalt der Datei EineDatei.txt wird in die Datei UmgeleiteteAusgabe.txt kopiert (wenn EineDatei.txt existiert).
type EineDateiDieNichtExistiert.txt > UmgeleiteteAusgabe.txt 2>&1
Wenn die Datei EineDateiDieNichtExistiert.txt nicht existiert, dann wird die Fehlermeldung (stderr) nicht im Dos-Fenster ausgegeben, sondern wird auch in die Datei UmgeleiteteAusgabe.txt geschrieben.
>>
BearbeitenUmleitung der (Standard-)Ausgabe mit Anhängen des Textes (falls die Datei schon existiert; sonst wird die Datei wie bei >
(siehe oben) angelegt)
Syntax
befehl >> file
Stapelanweisung: Ab ? bis Windows 7
Beispiel:
Inhalt
echo Hallo! > tmp.txt echo Haallooo!! >> tmp.txt type tmp.txt
Ausgabe
Hallo! Haallooo!!
Hier gilt analoges für die Fehler-Ausgabe (siehe Operator ' >
' oben).