848 Stimmen

Windows cmd stdout und stderr in eine einzige Datei umleiten

Ich versuche, die gesamte Ausgabe (stdout + stderr) eines DOS Befehl in eine einzelne Datei:

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 auf zwei separate Dateien umleiten?

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

5voto

LigH Punkte 41

Es gibt jedoch keine Garantie dafür, dass die Ausgabe von SDTOUT y STDERR werden Zeile für Zeile in zeitlicher Reihenfolge miteinander verwoben, wobei die POSIX Syntax für die Umleitung der Zusammenführung.

Wenn eine Anwendung eine gepufferte Ausgabe verwendet, kann es vorkommen, dass der Text des einen Streams an einer Puffergrenze in den anderen eingefügt wird, die in der Mitte einer Textzeile liegen kann.

Ein spezieller Logger für die Konsolenausgabe (d. h. der "StdOut/StdErr Logger" von 'LoRd MuldeR' ) kann für eine solche Aufgabe zuverlässiger sein.

Siehe: MuldeRs OpenSource-Projekte

4voto

PanamaPHat Punkte 39

In einer Batch-Datei (Windows 7 und höher) fand ich diese Methode am zuverlässigsten

Call :logging >"C:\Temp\NAME_Your_Log_File.txt" 2>&1
:logging
TITLE "Logging Commands"
ECHO "Read this output in your log file"
ECHO ..
Prompt $_
COLOR 0F

Sie können natürlich beliebige Befehle verwenden und die Ausgabe wird in die Textdatei geleitet. Mit dieser Methode ist zuverlässig, aber es gibt KEINE Ausgabe auf dem Bildschirm.

2 Stimmen

(im Grunde die gleiche Antwort, die schon vor Jahren gegeben wurde.) Sie können die Ausgabe auf dem Bildschirm mit >con echo This goes to screen Auch nützlich für Benutzereingaben >con set /p "var="Input: " Hinweis: Diese Zeilen werden seulement erscheinen auf dem Bildschirm und no auf die Datei umgeleitet werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X