Batch-Kurs, Teil 3: Hier gehts lang: Umleitungen
Windows-Kommandozeilen-Befehlen geben ihre Ausgabe normalerweise auf die Bildschirmkonsole aus. Mit dem Umleitungszeichen “>” kann man jedoch dafür sorgen, dass die Ausgaben woanders landen.
1
echo Hallo >datei.txt
leitet etwas die Ausgabe “Hallo” in die Datei datei.txt um. Existiert diese noch nicht, wird sie vom System neu erstellt. Ist sie bereits vorhanden, wird sie überschrieben (ohne weitere Rückfragen!)…
1
echo Hallo >>datei.txt
verhindert, dass die Datei überschrieben wird. Zwei spitze Klammern sorgen dafür, dass die Ausgabe an die Datei angehängt wird. Existiert sie noch nicht, wird sie wiederum erstellt.
Diese Umleitungen lassen sich natürlich auch für Kommandozeilenbefehle verwenden:
1
del datei.txt >>error.log
versucht, die Datei datei.txt zu löschen. Die Ausgaben des Befehls werden dabei in die Datei error.log geschrieben.
Ein bisschen Background
Für Windows sind diese Textausgaben sog. Streams. Von denen gibt es insgesamt 3 Stück:
StdOut: Ist der Standardoutput – Stream
StdErr: Dies ist der Error-Stream, also Fehlermeldungen
StdIn : ist der Stream, der an ein Programm übergeben wird.
Um bei der Ausführung eines Befehls nur die Fehlermeldungen in eine Logdatei umzuleiten, muss vor dem >-Zeichen eine 2 gesetzt werden:
1
del datei.txt 2>>error.log
Umleitung auf Gerätenamen
Um Anzeigen zu unterdrücken, kann man das reservierte Gerät nul benutzen. NUL ist soetwas wie der virtuelle Datenfriedhof…
1
del datei.txt >nul
unterdrückt alle Ausgaben des Befehls DEL.