Windows 7 上的 cmd.exe 中的管道不起作用

Windows 7 上的 cmd.exe 中的管道不起作用

我开始发现一些非常奇怪的问题,管道命令无法在我的计算机上的 Windows 7 64 位上运行。命令如下:

 echo test | more  

以前运行没有问题,但现在却失败并出现以下错误消息:

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

管道左侧和右侧的内容似乎也无关紧要,任何带有管道的命令行指令都会失败。如果管道右侧根本不是合适的可执行文件,这似乎也没有什么区别。

例如,以下都表现出相同的失败行为:

type file1 | findstr blah
dir | thisdoesnotexist

一周前,所有这些东西都运行正常,我不知道发生了什么变化。可能是在它停止工作时发生了 Windows 更新,但我不确定。

我的%PATH%%PATHEXT%环境变量看起来也都正常。它们的内容如下所示:

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  

不使用管道使用这些命令中的任何一个都可以正常工作,重定向到/从文件也可以正常工作。程序似乎可以正确退出,因为任何事件日志中都没有出现任何内容。

有谁知道这个问题可能是什么原因造成的?

答案1

您的 ComSpec 变量定义似乎不正确。ComSpec 变量应保存 CMD.EXE 的完整绝对路径。管道的两侧均由通过 ComSpec 定义启动的新 CMD 线程执行。如果 ComSpec 无效,管道将失败,正如您的情况一样。

我还不明白为什么如果 ComSpec 未指向有效的可执行文件,会出现该特定错误消息。但我已确认,如果我错误地设置了 ComSpec,然后尝试使用管道,我会在 Vista 上收到相同的消息。

相关内容