2016-08-09 116 views
0

Ich möchte Windows falsche Befehl Fehler msg in die Zwischenablage und dann an anderer Stelle einfügen. Ich tippe dies nur in cmd Fenster:Warum "Test 2> & 1 | Clip" funktioniert nicht wie erwartet in Windows-Konsole?

test 2>&1 | clip 

Und ich sehe keinen Fehler msg in der Konsole, so dass ich eigentlich sollte die stderr als meine erwarten umleiten werden. Leider bekomme ich nichts, wenn ich den Notizblock "paste".

Ich weiß, dass „java“ seine Hilfe Info, in stderr drucken, so habe ich versucht, den folgenden Befehl ein:

java 2>&1 | clip 

Es funktioniert richtig, wie mein erwarten, ich „Einfügen“ erfolgreich die Hilfe info in den Editor!

Also, warum mein erster Befehl nichts auf stdout drucken? Wohin geht der Fehler msg eigentlich?

Antwort

1

Wenn Sie eine Fehlermeldung vom Befehlsprozessor möchten, dann müssen Sie seinen Ausgang umleiten.

So

cmd 2>&1 /C "test" | clip 

Platziert die folgenden in der Zwischenablage:

'test' nicht als interne oder externe Befehl, ein Programm oder Batch-Datei erkannt wird.

+0

Ja, Ihr Befehl funktioniert gut. Aber warum funktioniert mein erster Befehl nicht? Ich bin neugierig darauf. –

+0

@TedWang - weil Sie die Fehlerausgabe für das "Test" -Programm umleiten. ** nicht ** die Fehlerausgabe "im Allgemeinen", oder wie oben gezeigt, die Fehlerausgabe für "cmd". Jeder Prozess hat seinen eigenen Satz von Eingabe, Ausgabe und Fehler, und die Nachricht, die Sie erfassen wollten, wurde nicht vom "Test" -Programm erzeugt (da es nie startet) –

+0

\ @Damien_The_Unbeliever Danke! Ich verstehe!. –