Windows CMD.exe "系统找不到指定的路径。"

21

通过恢复Windows到先前的状态解决

该消息(系统找不到指定的路径。)显示...

1)当我打开新的CMD(Win+R => cmd)时,它会有介绍。(第3行)

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
The system cannot find the path specified.

C:\Users\ViliamKopecky>

2) 当我执行一些命令,比如cmd /C dir(或者cmd /C php -v或其他任何命令)(第2行)

C:\Users\ViliamKopecky>cmd /C dir
The system cannot find the path specified.
 Volume in drive C is Windows7_OS
 Volume Serial Number is 8230-1246
...

C:\Windows\System32>cmd /C php -v
The system cannot find the path specified.
PHP 5.4.8 (cli) (built: Oct 16 2012 22:30:23)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

3) (最烦人的)当我从PHP或Node.js或可能任何脚本语言运行exec函数时(这些可能作为cmd /C <command>从内部运行),会出现问题。

消息没有显示...

1) 当我直接从cmd(或mingw,...)执行命令时不会出现该问题。

C:\Users\ViliamKopecky>dir
 Volume in drive C is Windows7_OS
 Volume Serial Number is 8230-1246

 Directory of C:\Users\ViliamKopecky

让我们从cmd中的简单命令开始。

php -r "exec('dir', $stdout, $stderr); print(implode(\"\n\", $stdout), $stderr);"

结果如下(目录test为空-这是正确的):

E:\test>php -r "exec('dir', $stdout, $stderr); print(implode(\"\n\", $stdout), $stderr);"
The system cannot find the path specified.
 Volume in drive E is www
 Volume Serial Number is 0C99-95EC

 Directory of E:\test

09.11.2012  22:42    <DIR>          .
09.11.2012  22:42    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  13 495 296 000 bytes free
int(1)

这表明从 php 中正确地执行了命令 dir。唯一错误的是第二行 - The system cannot find the path specified. - 它不应该出现。

此消息由从PHP(以及从Node.js作为require('child_process').exec("dir", function(err, stdout, stderr) {console.log(stderr)});)中的 exec 输出。

当我直接从 cmd (或 mingw 等) 执行命令时,它可以正确执行而没有出现此消息。环境变量 PATH 似乎没问题。问题只是通过 exec 函数从脚本环境执行命令。

如何消除这个烦人的消息?谢谢。


那么哪里是出错的代码? - Michael Krelin - hacker
这是消息 系统找不到指定的路径。 - 在更大的脚本中,它会显示50次左右。 - ViliamKopecky
systemshell_exec都会做同样糟糕的事情。 - ViliamKopecky
你正在使用哪个版本的PHP? - marknuzz
1
请查看alvaro在http://www.php.net/manual/en/function.exec.php的评论。 - marknuzz
显示剩余3条评论
4个回答

55
问题在于当你运行cmd.exe时,某些程序已设置为自动运行。在我的情况下,安装了ANSICON...然后我移动了文件而没有正确卸载。
我在这篇博客文章中找到了解决方案:

http://carol-nichols.com/2011/03/17/the-system-cannot-find-the-path-specified/

简单来说,要找到路径为HKCU\Software\Microsoft\Command Processor\AutoRun的值,并将其清除。

3
ANSICON——是的,问题是在我安装它之后开始出现的。将您的答案标记为已接受。谢谢 ;) - ViliamKopecky
1
我花了3个小时的时间研究我的drush安装错误的来源,最终发现它在php exec处失败了,而且是ANSICON +1导致的。 - user2509223
2
请确保您也检查了 HKLM\Software\Microsoft\Command Processor\AutoRun。特别是如果您使用 Clink。 - Gui Ambros
2
谢谢!我有一个残留的conda初始化钩子,它产生了这个错误,并在很远的地方产生了副作用。花了我一段时间去找到它,直到我最终找到了它! - Julien Marrec
1
在我的情况下,它是 HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun 而不是 HKCU\Software\Microsoft\Command Processor\AutoRun - Mubashar Javed
显示剩余4条评论

2
这条消息可能意味着环境变量 PATH 中的某个路径不存在。
以下 PowerShell 命令将打印缺失的路径。
($env:path).Trim(";").Split(";") | ? {-not (test-path $_)}

e.g.

> ($env:path).Trim(";").Split(";") | ? {-not (test-path $_)}
C:\Program Files\CMake\bin
C:\Program Files\SDCC\bin
C:\Users\wjbr\AppData\Local\Programs\Microsoft VS Code\bin

参考文献


0

这实际上看起来像是 PHP 的启动错误,而不是你的代码问题。执行

php -r "echo 1;"

是否也会抛出相同的错误?如果是,那么你的 php.ini 文件或一个 include 可能路径设置不正确。

php -i

应该会给你更多信息。


这个程序运行正确。 C:\Users\ViliamKopecky>php -r "echo 1;" 1 - ViliamKopecky

-3

我认为你应该试试这个!我曾经遇到同样的问题,用以下方法解决:

好的,输入:cd\windows\system32 然后你会看到这个:System32/: 输入你想要的命令(例如:ipconfig): System32: ipconfig 然后就可以了! :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接