Eine der nützlichsten Möglichkeiten, das Verhalten von Befehlen oder Batch-Aufträgen, die Sie unter Windows ausführen, zu protokollieren und Fehler zu beheben, ist die Umleitung der Ausgabe in eine Datei.
Es gibt jedoch einige verschiedene Möglichkeiten, wie Sie die Befehlszeilenausgaben in eine Datei umleiten können. Welche Option Sie wählen, hängt davon ab, wie Sie Ihre Befehlsausgabe betrachten möchten.
Wie die Ausgabe der Windows-Eingabeaufforderung funktioniert
Wenn Sie einen Befehl in die Windows-Konsole (Eingabeaufforderung) eingeben, wird die Ausgabe dieses Befehls in zwei getrennte Ströme geleitet.
- STDOUT: In den Standardausgang werden alle Standardantworten von Befehlen geleitet. Zum Beispiel ist die Standardantwort für den Befehl DIR eine Liste der Dateien in einem Verzeichnis.
- STDERR: Standard Error ist der Ort, an den alle Fehlermeldungen gehen, wenn es ein Problem mit dem Befehl gibt. Wenn sich zum Beispiel keine Dateien im Verzeichnis befinden, gibt der DIR-Befehl „Datei nicht gefunden“ in den Standardfehlerstrom aus.
Für beide Ausgabeströme können Sie in Windows die Ausgabe in eine Datei umleiten.
Standardausgabe in neue Datei umleiten
Es gibt zwei Möglichkeiten, die Standardausgabe eines Befehls in eine Datei umzuleiten. Die erste ist, die Befehlsausgabe jedes Mal in eine neue Datei zu schreiben, wenn Sie den Befehl ausführen.
Um dies zu tun, öffnen Sie die Eingabeaufforderung und geben Sie ein:
dir test.exe > myoutput.txt
Das Zeichen > weist die Konsole an, STDOUT in die Datei mit dem von Ihnen angegebenen Namen auszugeben.
Wenn Sie diesen Befehl ausführen, werden Sie feststellen, dass es im Befehlsfenster keine Antwort gibt, außer der Fehlermeldung, dass die Datei nicht existiert.
Das liegt daran, dass die Standardausgabe für den Befehl in eine Datei namens myoutput.txt umgeleitet wurde. Diese Datei befindet sich jetzt in demselben Verzeichnis, in dem Sie den Befehl ausgeführt haben. Die Standardfehlerausgabe wird weiterhin wie gewohnt angezeigt.
Hinweis: Achten Sie darauf, das aktive Verzeichnis für die Eingabeaufforderung zu ändern, bevor Sie den Befehl ausführen. Auf diese Weise wissen Sie, wo die Ausgabedateien gespeichert sind.
Sie können die Standardausgabe, die in der Datei gespeichert wurde, anzeigen, indem Sie „myoutput.txt“ in das Befehlsfenster eingeben. Dadurch wird die Textdatei in Ihrem Standard-Textdateibetrachter geöffnet. Für die meisten Leute ist dies normalerweise Notepad.exe.
Das nächste Mal, wenn Sie denselben Befehl ausführen, wird die vorherige Ausgabedatei gelöscht. Eine neue Ausgabedatei wird mit der Ausgabe des letzten Befehls neu erstellt.
Standardausgabe in dieselbe Datei umleiten
Was, wenn Sie nicht dieselbe Datei überschreiben wollen? Eine andere Möglichkeit ist, >> statt > zu verwenden, um die Ausgabe in eine Datei umzuleiten. In diesem Beispiel würden Sie Folgendes eingeben:
dir test.exe >> myoutput.txt
Sie erhalten die gleiche Ausgabe (nur den Fehler).
Aber in diesem Fall wird die Ausgabedatei nicht überschrieben, sondern die neue Ausgabe wird an die vorhandene Ausgabedatei angehängt.
Jedes Mal, wenn Sie einen Befehl ausführen und die Ausgabe an eine Datei anhängen, wird die neue Standardausgabe an das Ende der bestehenden Datei geschrieben.
Standardfehler in eine Datei umleiten
Auf dieselbe Weise, wie Sie die Standardausgabe in eine Datei umleiten können, können Sie auch den Standardfehlerstrom in eine Datei ausgeben.
Um dies zu tun, müssen Sie 2> an das Ende des Befehls anhängen, gefolgt von der Fehlerausgabedatei, die Sie erstellen möchten.
In diesem Beispiel geben Sie den Befehl ein:
dir test.exe > myoutput.txt 2> output.err
Dies sendet den Standardausgabestrom an myoutput.txt und den Standardfehlerstrom an output.err. Das Ergebnis ist, dass im Konsolenfenster überhaupt kein Ausgabestrom angezeigt wird.
Sie können jedoch die Fehlermeldungen sehen, indem Sie output.err eingeben. Dadurch wird die Datei in Ihrem Standard-Textdateibetrachter geöffnet.
Wie Sie sehen können, werden alle Fehlermeldungen des Befehls in die Fehlerdatei ausgegeben. Genau wie bei der Standardausgabe können Sie stattdessen >> verwenden, um den Fehler an Fehler von zuvor ausgeführten Befehlen anzuhängen.
Alle Ausgabeschreiben in dieselbe Datei umleiten
Alle oben genannten Ansätze führen zu mehreren Dateien. Eine Datei ist für den Standardausgabestrom und die andere für den Standardfehlerstrom.
Wenn Sie beide Ausgaben in dieselbe Datei einschließen möchten, können Sie das auch tun. Dazu müssen Sie nur alle Ausgaben mit dem folgenden Befehl in dieselbe Datei umleiten.
dir test.exe 1> myoutput.txt 2>&1
So funktioniert dieser Befehl:
- Die Standardausgabe wird in die Ausgabedatei mit der Nummer 1 umgeleitet.
- Die Standardfehlerausgabe, die durch die Nummer 2 identifiziert wird, wird in die Ausgabedatei umgeleitet, die durch die Nummer 1 identifiziert wird.
Dadurch wird die Fehlerausgabe an das Ende der Standardausgabe angehängt.
Dies ist eine nützliche Methode, um alle Ausgaben für einen Befehl in einer Datei zu sehen.
Standard- oder Fehlerausgabeströme abschalten
Sie können auch die Standardausgabe oder den Standardfehler abschalten, indem Sie die Ausgabe in ein NUL statt in eine Datei umleiten.
Wenn Sie, wie im obigen Beispiel, nur die Standardausgabe und keinen Standardfehler wünschen, können Sie den folgenden Befehl verwenden:
dir test.exe 1> myoutput.txt 2>nul
Das Ergebnis ist die gleiche Ausgabedatei wie im ersten Beispiel, bei dem Sie nur die Standardausgabe umleiten, aber mit diesem Befehl wird der Fehler nicht in der Konsole ausgegeben. Es wird auch keine Fehlerprotokolldatei erstellt.
Dies ist nützlich, wenn Sie sich nicht um Fehler kümmern und nicht wollen, dass sie zu einem Ärgernis werden.
Sie können jeden der oben genannten Ausgabebefehle innerhalb einer BAT-Datei ausführen und die Ausgabe dieser Zeile wird in die von Ihnen angegebene Ausgabedatei geleitet. Dies ist eine nützliche Methode, um zu sehen, ob irgendwelche Befehle innerhalb einer BAT-Datei Fehler hatten, als sie versuchten, ausgeführt zu werden.