Zum Inhalt springen

Batch-Programmierung: Batch-Operatoren

Aus Wikibooks


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)

bedingte 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)

bedingte 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.

Umleitung 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).