我需要编写一个批处理脚本来查明是否安装了Java,如果是,那么在什么路径下呢? 我觉得它必须与此类似:
for /f %%j in ("java.exe") do (
set JAVA_HOME=..........
)
但我无法弄清楚。
P.S。它必须使用带有空格2的路径。就像java安装到“程序文件”中一样。
感谢。
答案 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)
答案 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,并且比搜索文件系统更快。