【发布时间】:2014-09-05 07:03:58
【问题描述】:
您好,我需要一个批处理脚本来检查系统中是否有 java home 和脚本来比较 java 版本
我的要求是
1.) 脚本需要检查系统中是否设置了 java home。我认为“echo %JAVA_HOME%”会这样做。但是如果 Java Home 不可用,它需要显示一条消息显示“Java home is not可用。请在计算机>属性>变量路径中设置java主页。
2.) 需要检查系统中的java版本,如果java版本高于1.6_445则需要显示“Java版本高于MR工具将无法安装。(我认为对于这个,它需要创建一个数组并存储 Java 版本的值,并且需要比较这些值。但我不知道如何为它编写代码)由于 Java 版本包含下划线,所以我认为比较将是一项艰巨的任务.
目前我正在使用下面的脚本,但它根本不能满足我的要求。谁能帮我制作一个满足上述要求的脚本。提前致谢
回声 setlocal enableextensions disableddelayedexpansion
:: possible locations under HKLM\SOFTWARE of JavaSoft registry data
set "javaNativeVersion="
set "java32ON64=Wow6432Node\"
:: for variables
:: %%k = HKLM\SOFTWARE subkeys where to search for JavaSoft key
:: %%j = full path of "Java Runtime Environment" key under %%k
:: %%v = current java version
:: %%e = path to java
set "javaDir="
set "javaVersion="
for %%k in ( "%javaNativeVersion%" "%java32ON64%") do if not defined javaDir (
for %%j in (
"HKLM\SOFTWARE\%%~kJavaSoft\Java Runtime Environment"
) do for /f "tokens=3" %%v in (
'reg query "%%~j" /v "CurrentVersion" 2^>nul ^| find /i "CurrentVersion"'
) do for /f "tokens=2,*" %%d in (
'reg query "%%~j\%%v" /v "JavaHome" 2^>nul ^| find /i "JavaHome"'
) do ( set "javaDir=%%~e" & set "javaVersion=%%v" )
)
if not defined javaDir (
echo Java not found
) else (
echo JAVA_HOME="%javaDir%"
echo JAVA_VERSION="%javaVersion%"
)
endlocal
pause
【问题讨论】:
标签: java windows batch-file batch-processing java-home