在我们的一个生产服务器 2008 机器上,如果不提供完整文件名(包括“.exe”扩展名),我无法从 CMD 提示符运行可执行文件。例如,当运行“java”时,会出现常见的“未被识别为内部或外部命令”消息,我认为我弄错了路径和/或 java_home 变量。但是,即使导航到 %java_home%\bin 目录并输入“java”也会产生同样的错误。如果我输入“java.exe”,一切都会正常。
该问题不仅影响 java.exe。甚至 Microsoft 可执行文件也遇到同样的问题 —— ping 失败,ping.exe 可以运行;ipconfig 失败,ipconfig.exe 可以运行;手动创建的批处理文件“test”只有在明确调用为“test.bat”时才可以运行。
有什么好主意吗?
[编辑] 太棒了!问题在于 pathext 中的值不正确——有人无意中编辑了 PATHEXT 系统变量(在前面添加了 %java_home%\bin),而该编辑应该在 PATH 变量上进行。
谢谢!
答案1
好吧,我决定冒险一试,说你的PATHEXT
系统变量在该系统上被破坏了或者不存在。仔细查看你的环境变量中是否有重复的 PATHEXT 条目。
PATHEXT 系统变量的默认值应该是:
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
坏消息是,如果服务器启动时没有这个,您可能需要重新启动才能使设置生效,因为它是一个系统变量。
您最近从该框中删除了某个程序吗?
按照:http://vlaurie.com/computers2/Articles/environment.htm
%PATHEXT% 环境变量包含可执行文件扩展名,对于 %PATH% 变量中给出的目录中的任何文件,这些扩展名无需指定。扩展名 .EXE 是最常见的。因此,文件名 sol.exe 只需在命令行中输入为 sol。如果文件具有相同的名称但扩展名不同,则操作系统按以下优先顺序搜索:.EXE、.COM、.BAT 和 .CMD。
答案2
检查 PATHEXT 系统变量。
它应该显示类似这样的内容:
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC