如何从批处理脚本检查Java安装?

时间:2010-06-01 17:13:41

标签: java batch-file path

我需要编写一个批处理脚本来查明是否安装了Java,如果是,那么在什么路径下呢? 我觉得它必须与此类似:

for /f %%j in ("java.exe") do (
   set JAVA_HOME=..........
)

但我无法弄清楚。

P.S。它必须使用带有空格2的路径。就像java安装到“程序文件”中一样。

感谢。

4 个答案:

答案 0 :(得分:7)

使用reg [.exe]可以查询系统上安装的可能的JRE候选项。可能没有或可能有几个。

在测试设置中,在命令shell中运行:

reg query "HKLM\Software\JavaSoft\Java Runtime Environment"

我得到三个结果行,其中第一行是 CurrentVersion REG_SZ 1.6

基于此,查询

reg query "HKLM\Software\JavaSoft\Java Runtime Environment\1.6\"

给我JavaHome REG_SZ C:\Program Files\Java\jre6

它比扫描文件系统查找java二进制文件更有效。

这是在Windows XP 32位虚拟安装下测试的。

答案 1 :(得分:4)

你不能使用'where'命令吗?如:

>where java

对此进行测试?

示例:

C:\Users\myname>where java
C:\Program Files (x86)\Java\jdk1.6.0_17\bin\java.exe

C:\Users\myname>where foo
INFO: Could not find files for the given pattern(s).

答案 2 :(得分:1)

最新版本写入注册表:

HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft的

您可以使用reg.exe

查找其中的密钥并走出路径

答案 3 :(得分:1)

我会(使用批处理)

::get javaw.exe from the latest properly installed jre
for /f tokens^=2^ delims^=^" %%i in ('reg query HKEY_CLASSES_ROOT\jarfile\shell\open\command /ve') do set JAVAW_PATH=%%i

::if reg entry is not found, java is not installed
if "%JAVAW_PATH%"=="" goto YOUR_ERROR

::then strip "\javaw.exe" from the JAVAW_PATH obtained above
set JAVA_HOME=%JAVAW_PATH:\javaw.exe=%

这应该适用于在windows xp和7中安装的jre 1.6和1.7,并且比搜索文件系统更快。