Hintergrundinformationen von MSKB
Die akzeptierte Antwort auf diese Frage ist zwar richtig, aber sie trägt nicht viel zur Erklärung bei warum es funktioniert, und da die Syntax nicht sofort klar ist, habe ich schnell gegoogelt, um herauszufinden, was da eigentlich los ist. In der Hoffnung, dass diese Informationen für andere hilfreich sind, poste ich sie hier.
Entnommen aus MS-Support KB 110930 .
Von MSKB110930
Fehlermeldungen von der Eingabeaufforderung umleiten: STDERR/STDOUT
Zusammenfassung
Wenn die Ausgabe einer Anwendung mit dem Symbol '>' umgeleitet wird, werden Fehlermeldungen weiterhin auf dem Bildschirm ausgegeben. Dies liegt daran, dass Fehlermeldungen oft an den Standard Error Stream statt an den Standard Out Stream gesendet werden.
Die Ausgaben einer Konsolenanwendung (Eingabeaufforderung) oder eines Befehls werden häufig an zwei getrennte Ströme gesendet. Die reguläre Ausgabe wird an den Standardausgang (STDOUT) und die Fehlermeldungen werden an den Standardfehler (STDERR) gesendet. Wenn Sie die Konsolenausgabe mit dem Symbol ">" umleiten, leiten Sie nur STDOUT um. Um STDERR umzuleiten, müssen Sie "2>" für das Umleitungssymbol angeben. Dadurch wird der zweite Ausgabestrom ausgewählt, nämlich STDERR.
Beispiel
Der Befehl dir file.xxx
(wobei file.xxx
nicht vorhanden ist) wird die folgende Ausgabe angezeigt:
Volume in drive F is Candy Cane Volume Serial Number is 34EC-0876
File Not Found
Wenn Sie die Ausgabe in die Datei NUL
Gerät mit dir file.xxx > nul
sehen Sie immer noch die Fehlermeldung in der Ausgabe, etwa so:
File Not Found
So leiten Sie (nur) die Fehlermeldung an NUL
verwenden Sie den folgenden Befehl:
dir file.xxx 2> nul
Oder Sie können die Ausgabe an einen Ort und die Fehler an einen anderen umleiten.
dir file.xxx > output.msg 2> output.err
Sie können die Fehler und die Standardausgabe in eine einzige Datei drucken, indem Sie den Befehl "&1" verwenden, um die Ausgabe von STDERR nach STDOUT umzuleiten und dann die Ausgabe von STDOUT in eine Datei zu senden:
dir file.xxx 1> output.msg 2>&1
25 Stimmen
TechNet: Verwendung von Operatoren zur Befehlsumleitung (beantwortet diese Frage besser als alle anderen Antworten hier).
2 Stimmen
2>&1, da dieselbe Datei nicht erneut geöffnet werden kann