Pipe funktioniert nicht in cmd.exe unter Windows 7

Pipe funktioniert nicht in cmd.exe unter Windows 7

Ich habe angefangen, einige sehr seltsame Probleme mit dem Pipe-Befehl zu bemerken, der unter Windows 7 64-Bit auf meinem Rechner nicht funktioniert. Befehle wie dieser:

 echo test | more  

funktionierte früher problemlos, jetzt schlagen sie jedoch mit der folgenden Fehlermeldung fehl:

'.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC' is not recognized as an internal or external command, operable program or batch file.  

Es scheint auch egal zu sein, was sich auf der linken und rechten Seite der Pipe befindet, jede Befehlszeilenanweisung mit einer Pipe schlägt fehl. Es scheint auch keinen Unterschied zu machen, wenn die rechte Seite der Pipe überhaupt keine ordnungsgemäß ausführbare Datei ist.

Beispielsweise weisen die folgenden beiden das gleiche fehlerhafte Verhalten auf:

type file1 | findstr blah
dir | thisdoesnotexist

All diese Dinge funktionierten vor einer Woche einwandfrei und ich bin mir nicht sicher, was sich geändert haben könnte. Möglicherweise gab es ein Windows-Update, als es nicht mehr funktionierte, aber ich weiß es nicht genau.

Meine %PATH%und %PATHEXT%Umgebungsvariablen sehen beide auch OK aus. Ihr Inhalt sieht wie folgt aus:

Path=C:\Program Files\Common Files\Microsoft Shared\Microsoft Online Services;
C:\Program Files (x86)\Common Files\Microsoft Shared\Microsoft Online Services;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;
C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;
C:\Programs\WinMerge;
C:\Programs\TortoiseHg\;
C:\Programs\MySQL\MySQL Server 5.1\bin;
C:\Programs\Aldec\Active-HDL 9.1\bin;
C:\Programs\Tcl\bin;
C:\Programs\modeltech_pe_10.0b\win32pe;
C:\Programs\Atlassian\atlassian-plugin-sdk-3.2.3\bin;
C:\Xilinx\12.4\ISE_DS\ISE\bin\nt64;
C:\altera\12.1\quartus\bin64

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC  

Die Verwendung eines dieser Befehle ohne Pipe funktioniert einwandfrei, und die Umleitung zu/von einer Datei funktioniert ebenfalls einwandfrei. Die Programme scheinen ordnungsgemäß beendet zu werden, da in keinem der Ereignisprotokolle etwas angezeigt wird.

Weiß jemand, was die Ursache für ein solches Problem sein könnte?

Antwort1

Es sieht so aus, als ob Ihre ComSpec-Variablendefinition falsch definiert ist. Die ComSpec-Variable sollte den vollständigen absoluten Pfad zu CMD.EXE enthalten. Beide Seiten einer Pipe werden von einem neuen CMD-Thread ausgeführt, der über die Definition von ComSpec gestartet wird. Die Pipe schlägt fehl, wenn ComSpec ungültig ist, wie es in Ihrem Fall der Fall ist.

Ich habe nicht herausgefunden, warum diese spezielle Fehlermeldung erscheint, wenn ComSpec nicht auf eine gültige ausführbare Datei verweist. Aber ich habe bestätigt, dass ich unter Vista dieselbe Meldung erhalte, wenn ich ComSpec falsch einstelle und dann versuche, eine Pipe zu verwenden.

verwandte Informationen