无法通过双击运行批处理文件,但在 cmd 窗口或 WinKEY+R 中输入时可以正常运行

无法通过双击运行批处理文件,但在 cmd 窗口或 WinKEY+R 中输入时可以正常运行

好吧,这很奇怪。我不知道为什么会发生这种情况或如何解决这个问题。标题几乎说明了一切,但我将进一步详细说明:

打开cmd.exe运行命令或者调用批处理文件:好的
打开 WinKEY+R 运行批处理文件:好的
双击打开批处理文件:...不被识别为内部或外部命令、可运行程序或批处理文件。

此错误不仅限于我通过批处理文件调用的特定命令。即使是最简单的命令似乎也会失败。

所以我的第一个猜测是文件关联或环境变量出了问题。检查了这些,但它们似乎没有问题:

ComSpec%SystemRoot%\system32\cmd.exe
PATHEXT.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PATHC:\Windows\System32\;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;

注册表看起来也不错:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.cmd

OpenWithList子项为空。 OpenWithProgids包含:

(Default) REG_SZ (value not set)  

cmdfile REG_NONE (zero-leght binary value)

这是一个相当新的 Windows 安装。Windows 7 x64。有什么想法现在该去哪里找吗?

答案1

这听起来像是编码问题。除非您知道需要 UTF-8 或 Unicode,否则请尝试保存以 ANSI 编码的批处理文件的副本。

  1. 在记事本中打开批处理文件
  2. 文件(菜单),另存为
  3. 输入不同的文件名(不覆盖)
  4. 在编码下拉菜单中选择 ANSI
  5. 点击“保存”

注意:如果您的批处理文件需要 UTF-8 或 Unicode 字符,则该过程会更加复杂。

答案2

好的,我想我已经搞明白了。显然在我发帖之前我遗漏了C:\Windows\System32\变量PATH。添加这个并发帖并没有改变任何东西,直到我做了书中最古老的修复:重新启动。这解决了问题。此外,由于某种原因(不确定这是默认的),变量USERNAME不是SYSTEM我的用户名。放入%username%cmd 正确返回了我的用户名。有点奇怪,但现在一切似乎都正常了。

相关内容