[BATCH | UNFERTIG: Operatoren] Erklärung möglicher Batch-Operatoren #Batch #Bat #& #UNFERTIG #and Operator Operatoren #Pipe Befehl Befehlsverkettung Command Bedingt BedingteBefehlsverkettung DOS Windows Kommandozeile Commandline
Befehlsverkettung:
Mehrere Batch-Befehle in einer Zeile können hintereinander ausgeführt werden.
befehl1 & befehl2
Stapelanweisung:
Ab DOS bis Windows 10.
Beispiel einer Befehlsverkettung:
echo Hallo! & echo und Tschüss!
Auf dem Bildschirm ergibt sich folgende Ausgabe:
Ausgabe:
Hallo! und Tschüss!
Befehlsverkettung: Der zweite Befehl bekommt die Ausgabe des ersten Befehls als Eingabe.
befehl1 | befehl2
Stapelanweisung: Ab DOS (nur für more als zweiter Befehl); allgemein verwendbar ab WindowsNT bis Windows 10.
type test.txt | more
Auf dem Bildschirm ergibt sich folgende Ausgabe:
Ausgabe:
Zeile 1 Zeile 2 ... Zeile 24 -- Fortsetzung -- *(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.
befehl1 && befehl2
Stapelanweisung: Ab DOS bis Windows 10
copy test.txt test2.txt && echo Kopieren erfolgreich!
Auf dem Bildschirm ergibt sich folgende Ausgabe:
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.
befehl1 || befehl2
Stapelanweisung: Ab DOS bis Windows 10.
copy test.txt test2.txt || echo Fehler beim Kopieren!
Auf dem Bildschirm ergibt sich folgende Ausgabe:
Ausgabe:
Fehler beim Kopieren! *(falls test.txt nicht existiert oder test2.txt nicht geschrieben bzw. überschrieben werden konnte)*
befehl < file
echo Hallo! > tmp.txt
set /P v= < tmp.txt
echo %v%
Auf dem Bildschirm ergibt sich folgende Ausgabe:
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 und diese bereits existiert: Datei wird neu angelegt. Wenn das Ziel eine Datei ist und diese noch nicht existiert: Existierende Datei wird gelöscht und neu angelegt.
Es kann aber auch nach NUL oder CON (Bildschirm) umgeleitet werden:
Ausgabe verschwindet / wird verborgen.
Ausgabe wird auf dem Bildschirm angezeigt.
befehl > file
oder auch mit vorangestellter Umleitung (praktisch wenn bei der Ausgabe einzelne " vorkommen)
> file befehl
echo Hallo! > tmp.txt
type tmp.txt
Auf dem Bildschirm ergibt sich folgende Ausgabe:
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.
stdout
/ stderr
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>
.
Code:
dir >stdout.txt 2>stderror.txt
###### Legende:
| AUSGABE-TYP | ... | BEZEICHNER | STANDARDMÄẞIG VIA |
|-----|-----|-----|-----|
| Standard-Ausgabe | **stdout** | `>` oder `1>` | Bildschirm |
| Fehler-Ausgabe | **stderr** | `2>` | Bildschirm |---
###### Legende:
| AUSGABE-TYP | ... | BEZEICHNER | STANDARDMÄẞIG VIA |
|-----|-----|-----|-----|
| Standard-Ausgabe | **stdout** | `>` oder `1>` | Bildschirm |
| Fehler-Ausgabe | **stderr** | `2>` | Bildschirm |
###### Legende:
| AUSGABE-TYP | ... | BEZEICHNER | STANDARDMÄẞIG VIA |
| ----- | ----- | ----- | ----- |
| Standard-Ausgabe | **stdout** | `>` oder `1>` | Bildschirm |
| Fehler-Ausgabe | **stderr** | `2>` | Bildschirm |
###### Legende:
| AUSGABE-TYP | ... | BEZEICHNER | STANDARDMÄẞIG VIA |
| ----- | ----- | ----- | ----- |
| Standard-Ausgabe | **stdout** | `>` oder `1>` | Bildschirm |
| ----- | ----- | ----- | ----- |
| Fehler-Ausgabe | **stderr** | `2>` | Bildschirm |
```bat
stdout stderr
Auf dem Bildschirm ergibt sich folgende Ausgabe:
Ausgabe:
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:
##### Code:
```bat
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)
befehl >> file
Stapelanweisung: Ab DOS bis Windows 10.
echo Hallo! > tmp.txt
echo Haallooo!! >> tmp.txt
type tmp.txt
Auf dem Bildschirm ergibt sich folgende Ausgabe:
Ausgabe:
Hallo! Haallooo!!
Hier gilt analoges für die Fehler-Ausgabe (siehe Operator ' > ' oben).
| abc | def | ghi |
|-----|-----|-----|
| 012 | 345 | 678 |
|-----|-----|-----|
| 012 | 345 | 678 |