Ausgabe von der Windows-Befehlszeile in eine Textdatei umleiten

Eine der nützlichsten Methoden zum Protokollieren und Beheben des Verhaltens von Befehlen oder Batchaufträgen, die Sie unter Windows ausführen, besteht darin, die Ausgabe in eine Datei umzuleiten.

Es gibt jedoch einige verschiedene Möglichkeiten, wie Sie Befehlszeilenschreibvorgänge in eine Datei umleiten können. Welche Option Sie auswählen, hängt davon ab, wie Sie Ihre Befehlsausgabe anzeigen möchten.

Funktionsweise der Windows-Eingabeaufforderungsausgabe(How Windows Command Prompt Output Works)

Wenn Sie einen Befehl in die Windows - Konsole ( Eingabeaufforderung(command prompt) ) eingeben, geht die Ausgabe dieses Befehls an zwei separate Streams.

  • STDOUT : Standard Out ist der Ort, an den alle Standardantworten von Befehlen gehen. Beispielsweise ist die Standardantwort für den DIR - Befehl eine Liste von 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 beispielsweise keine Dateien im Verzeichnis befinden, gibt der DIR- Befehl „ Datei(File) nicht gefunden“ an den Standardfehlerstrom(Standard Error) aus .

Sie können die Ausgabe für beide Ausgabestreams in eine Datei in Windows umleiten.(Windows)

Standardausgabe in neue Datei schreiben umleiten(Redirect Standard Output Write to New File)

Es gibt zwei Möglichkeiten, die Standardausgabe eines Befehls in eine Datei umzuleiten. Die erste besteht darin, die Befehlsausgabe jedes Mal, wenn Sie den Befehl ausführen, in eine neue Datei zu schreiben.

Öffnen Sie dazu die Eingabeaufforderung und geben Sie Folgendes 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(run this command) , werden Sie feststellen, dass im Befehlsfenster keine Antwort angezeigt wird, außer dem Fehler, dass die Datei nicht vorhanden ist.

Dies liegt daran, dass die Standardausgabe für den Befehl in eine Datei namens myoutput.txt umgeleitet wurde. Die Datei befindet sich jetzt in demselben Verzeichnis, in dem Sie den Befehl ausgeführt haben. Die Standardfehlerausgabe wird weiterhin wie gewohnt angezeigt.

Hinweis(Note) : Achten Sie darauf, das aktive Verzeichnis(change the active directory) 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 anzeigen, die in die Datei gegangen ist, indem Sie „myoutput.txt“ in das Befehlsfenster eingeben. Dadurch wird die Textdatei in Ihrem standardmäßigen Textdatei-Viewer geöffnet. Für die meisten Leute ist dies normalerweise Notepad.exe .

Wenn Sie denselben Befehl das nächste Mal ausführen, wird die vorherige Ausgabedatei gelöscht. Eine neue Ausgabedatei wird mit der Ausgabe des letzten Befehls neu erstellt.

Schreibvorgänge der Standardausgabe(Standard Output) in dieselbe Datei umleiten(Same File)

Was ist, wenn Sie dieselbe Datei nicht überschreiben möchten? Eine andere Option ist die Verwendung von >> anstelle von >, um zu einer Ausgabedatei umzuleiten. In diesem Beispiel würden Sie Folgendes eingeben:

dir test.exe >> myoutput.txt

Sie sehen dieselbe Ausgabe (nur den Fehler).

Aber in diesem Fall hängt dieser Befehl die neue Ausgabe an die vorhandene Ausgabedatei an, anstatt die Ausgabedatei zu überschreiben.

Jedes Mal, wenn Sie einen Befehl ausführen und die Ausgabe an eine Datei anhängen, wird die neue Standardausgabe an das Ende der vorhandenen Datei geschrieben.

Standardfehler in eine Datei umleiten(Redirect Standard Error To a File)

Genauso wie Sie Standardausgabeschreibvorgänge in eine Datei umleiten können, können Sie auch den Standardfehlerstrom in eine Datei ausgeben.

Dazu müssen Sie am Ende des Befehls 2> hinzufügen , gefolgt von der Ausgabefehlerdatei, die Sie erstellen möchten.

In diesem Beispiel geben Sie den Befehl ein: 

dir test.exe > myoutput.txt 2> output.err

Dadurch wird der Standardausgabestream an myoutput.txt und der Standardfehlerstream an output.err gesendet. Das Ergebnis ist, dass überhaupt kein Ausgabestream im Konsolenfenster angezeigt wird.

Sie können die Fehlermeldungen jedoch anzeigen, indem Sie output.err eingeben(output.err) . Dadurch wird die Datei in Ihrem standardmäßigen Textdatei-Viewer geöffnet.

Wie Sie sehen können, werden alle Fehlermeldungen des Befehls in die Fehlerdatei ausgegeben. Genau(Just) wie bei der Standardausgabe können Sie stattdessen >> verwenden, um den Fehler an Fehler von zuvor ausgeführten Befehlen anzuhängen.

Alle Ausgabeschreibvorgänge in dieselbe Datei umleiten(Redirect All Output Writes to a Same File)

Alle oben genannten Ansätze führen zu mehreren Dateien. Eine Datei ist für den Standardausgabestream und die andere für den Standardfehlerstream.

Wenn Sie diese beiden Ausgaben in dieselbe Datei aufnehmen möchten, können Sie dies auch tun. Dazu müssen Sie nur die gesamte Ausgabe mit dem folgenden Befehl in dieselbe Datei umleiten.

dir test.exe 1> myoutput.txt 2>&1

So funktioniert dieser Befehl:

  • Die Standardausgabe wird an die durch Ausgabenummer 1 gekennzeichnete Ausgabedatei geleitet.
  • Die mit Nummer 2 gekennzeichnete Standardfehlerausgabe wird an die mit Nummer 1 gekennzeichnete Ausgabedatei umgeleitet.

Dadurch wird die Fehlerausgabe an das Ende der Standardausgabe angehängt.

Dies ist eine nützliche Methode, um die gesamte Ausgabe für einen beliebigen Befehl in einer Datei anzuzeigen. 

Stummschalten von Standard- oder Fehlerausgabeströmen(Silencing Standard or Error Output Streams)

Sie können auch entweder die Standardausgabe(Standard Output) oder den Standardfehler deaktivieren , indem Sie die Ausgabe in eine (Standard Error)NUL statt in eine Datei umleiten .

Wenn Sie anhand des obigen Beispiels nur die Standardausgabe(Standard Output) und überhaupt keinen Standardfehler(Standard Error) wünschen , können Sie den folgenden Befehl verwenden:

dir test.exe 1> myoutput.txt 2>nul

Dies führt zu derselben Ausgabedatei wie im ersten Beispiel oben, wo Sie nur die Standardausgabe(Standard Output) umgeleitet haben, aber mit diesem Befehl wird der Fehler nicht in der Konsole wiedergegeben. Es wird auch keine Fehlerprotokolldatei erstellt.

Dies ist nützlich, wenn Sie sich nicht um Fehler kümmern und nicht möchten, dass sie zu einem Ärgernis werden.

Sie können jeden der oben genannten Ausgabebefehle innerhalb einer BAT-Datei(inside a BAT file) ausführen, und die Ausgabe dieser Zeile geht in die von Ihnen angegebene Ausgabedatei. Auf diese Weise können Sie feststellen, ob bei Befehlen in einer BAT -Datei beim Versuch, sie auszuführen, Fehler aufgetreten sind.



About the author

Ich habe einen Hintergrund in Computertechnik und Informationstechnologie, der mir eine einzigartige Perspektive auf die Plattformen Windows 10 und 11 verschafft hat. Insbesondere bin ich sowohl mit der Windows 10 „Desktop Experience“ als auch mit dem Microsoft Edge-Browser erfahren. Meine Erfahrung mit diesen beiden Plattformen gibt mir ein tiefes Verständnis dafür, wie sie funktionieren, und mein Fachwissen in diesen Bereichen ermöglicht es mir, zuverlässige Ratschläge zu geben, wie sie verbessert werden können.



Related posts