mar*_*ush 6 windows-7 command-line pipe
我开始看到一些非常奇怪的问题,管道命令在我的机器上的 Windows 7 64 位上不起作用。像这样的命令:
echo test | more
Run Code Online (Sandbox Code Playgroud)
过去可以正常工作,但现在它们失败并显示以下错误消息:
'.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.
Run Code Online (Sandbox Code Playgroud)
管道左侧和右侧的内容似乎也无关紧要,任何带有管道的命令行指令都会失败。如果管道的右侧根本不是正确的可执行文件,它似乎也没有什么区别。
例如,以下都表现出相同的失败行为:
type file1 | findstr blah
dir | thisdoesnotexist
Run Code Online (Sandbox Code Playgroud)
一周前所有这些都运行良好,我不确定会发生什么变化。在它停止工作时可能发生了 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
Run Code Online (Sandbox Code Playgroud)
在没有管道的情况下使用这些命令中的任何一个都可以正常工作,并且重定向到/从文件也可以正常工作。程序似乎正确退出,因为任何事件日志中都没有出现任何内容。
有谁知道导致此类问题的原因是什么?
看起来您的 ComSpec 变量定义不正确。ComSpec 变量应保存 CMD.EXE 的完整绝对路径。管道的两端都由一个新的 CMD 线程执行,该线程通过 ComSpec 的定义启动。如果 ComSpec 无效,则管道将失败,就像您的情况一样。
如果 ComSpec 没有指向有效的可执行文件,我还没有弄清楚为什么会出现该特定错误消息。但是我已经确认,如果我不正确地设置 ComSpec 然后尝试使用管道,我会在 Vista 上收到相同的消息。
归档时间: |
|
查看次数: |
6269 次 |
最近记录: |