Windows cmd stdout und stderr in eine einzige Datei umleiten

Ich versuche, alle Ausgaben (stdout + stderr) eines DOS-Befehls in eine einzige Datei umzuleiten:

C:\>dir 1> a.txt 2> a.txt
The process cannot access the file because it is being used by another process.

Ist das möglich, oder sollte ich einfach in zwei separate Dateien umleiten?

Lösung

Sie wollen:

dir > a.txt 2>&1

Die Syntax 2>&1 wird 2 (stderr) nach 1 (stdout) umleiten. Sie können Nachrichten auch ausblenden, indem Sie auf NUL umleiten, weitere Erklärung und Beispiele auf MSDN.

Kommentare (9)

Anders Lindahl's Antwort ist richtig, aber es sollte beachtet werden, dass, wenn Sie stdout in eine Datei umleiten und auch stderr umleiten wollen, Sie sicherstellen MÜSSEN, dass 2>&1 NACH der 1>-Umleitung angegeben wird, sonst wird es nicht funktionieren.

REM *** WARNING: THIS WILL NOT REDIRECT STDERR TO STDOUT ****
dir 2>&1 > a.txt
Kommentare (14)

Ich habe die Antwort gerade herausgeschnitten, da @Anders sie gerade gepostet hat, aber...

In meiner Windows-Hilfe habe ich nach Umleitung gesucht (URL ms-its:C:\WINDOWS\Help\ntcmds.chm::/redirection.htm).

Vielleicht möchten Sie auch etwas über >> und | (pipe) lesen.

Kommentare (0)