La tubería no funciona en cmd.exe en Windows 7

La tubería no funciona en cmd.exe en Windows 7

Empecé a ver algunos problemas muy extraños con el comando pipe que no funciona en Windows 7 de 64 bits en mi máquina. Comandos como este:

 echo test | more  

Solía ​​funcionar sin problemas, pero ahora fallan con el siguiente mensaje de error:

'.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.  

Tampoco parece importar lo que haya en los lados izquierdo y derecho de la tubería, cualquier instrucción de línea de comando con una tubería falla. Tampoco parece hacer una diferencia si el lado derecho de la tubería no es un ejecutable adecuado en absoluto.

Por ejemplo, los siguientes muestran el mismo comportamiento fallido:

type file1 | findstr blah
dir | thisdoesnotexist

Todas estas cosas funcionaron bien hace una semana y no estoy seguro de qué podría haber cambiado. Posiblemente hubo una actualización de Windows en el momento en que dejó de funcionar, pero no estoy seguro.

Tanto mis variables %PATH%como las de entorno se ven bien. %PATHEXT%Su contenido se parece al siguiente:

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  

Usar cualquiera de estos comandos sin la tubería funciona bien, y redirigir hacia/desde un archivo también funciona bien. Los programas parecen estar saliendo correctamente ya que no aparece nada en ninguno de los registros de eventos.

¿Alguien sabe cuál podría ser la causa de tal problema?

Respuesta1

Parece que la definición de la variable ComSpec no está definida correctamente. La variable ComSpec debe contener la ruta absoluta completa a CMD.EXE. Ambos lados de una tubería se ejecutan mediante un nuevo subproceso CMD que se inicia mediante la definición de ComSpec. La tubería fallará si ComSpec no es válida, como está sucediendo en su caso.

No he descubierto por qué aparece ese mensaje de error en particular si ComSpec no apunta a un ejecutable válido. Pero he confirmado que recibo el mismo mensaje en Vista si configuro ComSpec incorrectamente y luego intento usar una tubería.

información relacionada