我打开一个 cmd(Windows 7),然后输入“java.exe”,系统在 c:\program files\java\jre6\bin 找到可执行文件。
但是,此文件夹不在路径中。还有什么其他机制影响 exe 查找?
答案1
从 Vista 及更高版本开始,Windows 现在包含一个名为 的实用程序where
。此程序的功能与您期望的 unix 对应程序一样(我很高兴他们添加了它!)
用法:
C:\>where java
C:\Windows\System32\java.exe
更棒的是where
,它会显示路径中找到的所有可执行文件,所以如果你在 C:\Windows 中也有 java.exe,它会显示在下面\System32\ 一个。
编辑
我认为我还会为那些想要在没有第三方工具的情况下使用该功能的 XP 用户提供一个选项。Raymond Chen 编写了一个命令脚本90 字节的“whereis”程序。这是完成相同任务的漂亮一行代码!
@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i
将上述脚本保存为 .bat 或 .cmd 文件,然后您就可以从命令行以文件名作为参数启动它。它会像您预期的那样工作!(注意,如果使用脚本版本,请省略扩展名,它会为您搜索所有可执行扩展名)
答案2
c:\windows\system32 (这是环境变量中定义的路径)中有一个 java.exe 的副本。它是在命令提示符下键入 java.exe 时出现的那个,而不是 c:\program files\java\jre6\bin 中的那个。
答案3
还有另一种方法可以使用 powershell 查找路径中的文件位置:
(Get-Command java).Source