Windows 7 CLI 无法识别未指定扩展名的命令

Windows 7 CLI 无法识别未指定扩展名的命令

我显然以一种奇怪的方式弄乱了我的系统。cmd除非我明确输入其扩展名,否则 Windows 7 的提示将不再识别任何可执行文件或批处理文件。

C:\Users\Current> xcopy /?
'xcopy' is not recognized as an internal or external command,
operable program or batch file.

通过使用扩展名限定它来解决这个问题.exe

C:\Users\Current> xcopy.exe /?
< ... all of the help for xcopy shows below, as expected ... >

当 xcopy 停止工作时,我以为我做了一些事情来破坏我的路径,但将其设置回 Windows 通常包含的一组最少的东西并没有解决这个问题。我的路径目前如下:

C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\KC\Scripts

其中唯一不标准的东西是C:\KC\Scripts,它在我的用户路径中指定。我不认为该字符串有任何格式错误。最近在通过 Windows RubyInstaller 安装 Ruby 并选择让它自动更新我的路径后发生了这种情况。此后,我从路径中删除了除上面发布的内容之外的所有内容,但错误仍然存​​在。

是否有人知道为什么 Windows 会停止识别 CLI 中的程序和批处理文件,而没有明确指定它们是 .exe 或 .bat 文件?

答案1

cmdWindows shell 错误的可能原因

'foo' is not recognized as an internal or external command,
operable program or batch file

两个环境变量与shell命令执行紧密相关:PATHPATHEXT

  • 环境PATH变量定义 Windows 搜索路径,即命令 shell 尝试定位时搜索的目录列表可执行文件文件。
  • 环境PATHEXT变量定义了 Windows 在搜索可执行文件文件。

任何文件扩展名都可以考虑可执行文件:如果文件扩展名与应用程序相关联,则 shell 将执行相应的应用程序。这里已关联的代表相同定义为默认 shell 操作在 Windows 注册表中针对特定文件扩展名。

以下是对此主题的一个很好的介绍:Windows NT 命令外壳

答案2

我在使用批处理文件将 Access 前端应用程序复制到用户本地计算机时遇到了这个问题。他们的环境是 Windows 7 和 8 以及 32-64 位计算机的混合体。

我注意到 xcopy.exe 同时位于 System32 和 SysWOW64 文件夹中,我想知道是否存在冲突。

我将 xcopy.exe 复制到批处理文件所在的文件夹中,现在它似乎可以正常工作了。

相关内容