Obwohl die akzeptierte Antwort auf diese Frage richtig ist, erklärt sie nicht viel, warum sie funktioniert, und da die Syntax nicht sofort klar ist, habe ich schnell googelt, um herauszufinden, was tatsächlich vor sich geht. In der Hoffnung, dass diese Informationen für andere hilfreich sind, veröffentliche ich sie hier.
Umleiten von Fehlermeldungen von der Eingabeaufforderung: STDERR / STDOUT
Zusammenfassung
Wenn Sie die Ausgabe einer Anwendung mit dem Symbol '>' umleiten, werden weiterhin Fehlermeldungen auf dem Bildschirm angezeigt. Dies liegt daran, dass Fehlermeldungen häufig an den Standardfehlerstrom anstelle des Standardausgangs gesendet werden.
Die Ausgabe einer Konsolenanwendung oder eines Befehls wird häufig an zwei separate Streams gesendet. Die reguläre Ausgabe wird an Standard Out (STDOUT) und die Fehlermeldungen an Standard Error (STDERR) gesendet. Wenn Sie die Konsolenausgabe mit dem Symbol ">" umleiten, leiten Sie nur STDOUT um. Um STDERR umzuleiten, müssen Sie für das Umleitungssymbol '2>' angeben. Dies wählt den zweiten Ausgabestream aus, der STDERR ist.
Beispiel
Der Befehl dir file.xxx
(wo file.xxx
nicht vorhanden) zeigt die folgende Ausgabe an:
Volume in drive F is Candy Cane Volume Serial Number is 34EC-0876
File Not Found
Wenn Sie die Ausgabe mit auf das NUL
Gerät umleiten dir file.xxx > nul
, wird weiterhin der Teil der Fehlermeldung der Ausgabe angezeigt :
File Not Found
NUL
Verwenden Sie den folgenden Befehl, um (nur) die Fehlermeldung an umzuleiten :
dir file.xxx 2> nul
Sie können die Ausgabe auch an eine Stelle und die Fehler an eine andere umleiten.
dir file.xxx > output.msg 2> output.err
Sie können die Fehler und die Standardausgabe in eine einzelne Datei drucken, indem Sie mit dem Befehl "& 1" die Ausgabe für STDERR an STDOUT umleiten und dann die Ausgabe von STDOUT an eine Datei senden:
dir file.xxx 1> output.msg 2>&1