Ich habe eine Anwendung, die viel Rauschen in stderr protokolliert und die Ausführung der Anwendung WIRKLICH verlangsamt. Ich möchte diese Ausgabe auf null umleiten. Ist das mit cmd.exe möglich?
Ich Sie wollen einen Befehl (stdout und stderr) do@command > nul 2>&1
kofifus
Antworten:
171
Your DOS command 2> nul
Seite lesen Verwenden von Befehlsumleitungsoperatoren . Neben dem von Tanuki Software erwähnten Konstrukt "2>" werden einige andere nützliche Kombinationen aufgeführt.
Das Folgen wird jedoch fast das Gegenteil von dem bewirken, was manche erwarten copy foo.txt con >> bar 2>nul. Die Leiste enthält den Text, den eine Datei (en) kopiert hat, und die Konsole enthält den Inhalt von foo.txt .
Patrick Fromberg
1
@Mawg Ich glaube nicht. Es ist wahrscheinlich etwas Spezielles für Ihr Nutzungsszenario. Beispiel: @for /L %C in (1,1,10) do @type nonexistent 2> nulErzeugt keine zehn Leerzeilen.
Atzz
2
@PatrickFromberg Das liegt daran, dass cones kein Synonym für STDOUT ist. Es handelt sich um eine Pseudodatei, die der tatsächlichen Konsole zugeordnet ist, sodass sie nicht von der Umleitung betroffen ist. Etwas ähnlich wie Linuxish (cat /proc/version > /dev/tty) > bar: Die äußere Weiterleitung wirkt sich nicht auf die innere aus.
Atzz
1
@ SamHabiel Nicht wirklich. Die Frage ist ungefähr stderr.
@command > nul 2>&1
Antworten:
Seite lesen Verwenden von Befehlsumleitungsoperatoren . Neben dem von Tanuki Software erwähnten Konstrukt "2>" werden einige andere nützliche Kombinationen aufgeführt.
quelle
copy foo.txt con >> bar 2>nul
. Die Leiste enthält den Text, den eine Datei (en) kopiert hat, und die Konsole enthält den Inhalt von foo.txt .@for /L %C in (1,1,10) do @type nonexistent 2> nul
Erzeugt keine zehn Leerzeilen.con
es kein Synonym für STDOUT ist. Es handelt sich um eine Pseudodatei, die der tatsächlichen Konsole zugeordnet ist, sodass sie nicht von der Umleitung betroffen ist. Etwas ähnlich wie Linuxish(cat /proc/version > /dev/tty) > bar
: Die äußere Weiterleitung wirkt sich nicht auf die innere aus.stderr
.