批处理脚本来检查Java的家庭和比较的Java版本 [英] Batch script to check the Java home and compare java version

查看:220
本文介绍了批处理脚本来检查Java的家庭和比较的Java版本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好我需要一个批处理脚本来检查Java主是否在系统中的脚本可用于比较的Java版本。

我的要求是

1)脚本需要检查Java主是否在system.I设置想到回声%JAVA_HOME%会做它。但是如果Java主目录不存在,它需要显示出的Java家里没有消息available.Please设置Java家中的电脑>属性>变量路径。

2)。它需要系统检查Java版本,如果Java版本号大于1.6_445高于它需要的信息是Java版本是更高MR工具将无法安装到diplay。(我想为这一个它需要创建一个数组并存储Java版本的值,它需要比较values​​.But我不知道该怎么写code吧)自从Java版本包含下划线的比较将是一个艰难任务我想。

目前我使用的是下面的脚本,但它并不满足我的requirements.Can任何一个请帮我做一个脚本来提前上述requirements.Thanks满足

回声关闭
    SETLOCAL ENABLEEXTENSIONS disabledelayedexpansion

下JavaSoft的注册表数据的HKLM \\ SOFTWARE

  ::可能的位置
设置javaNativeVersion =
集java32ON64 = Wow6432Node \\::变量
:: %% K = HKLM \\ SOFTWARE子项在哪里搜索JavaSoft的关键
:: %% J = %%ķ下的Java运行时环境键全路径
:: %% V =当前的Java版本
:: %% E =路径的java设置javaDir =
设置javaVersion =
对于%% K的(%javaNativeVersion%%java32ON64%)做。如果没有定义javaDir(
    在%%Ĵ(
        HKLM \\ SOFTWARE \\ %%〜kJavaSoft \\ Java运行时环境
    )做/ F令牌= 3%% V(
        章查询%%〜J/ VCURRENTVERSION2 ^> NUL ^ |查找/ ICURRENTVERSION'
    )FOR / F做令牌= 2 *的%% D(
        章查询%%〜J□\\ %% V/ V的JavaHome2 ^> NUL ^ |发现/我的Ja​​vaHome'
    )做(设置javaDir = %%〜E和安培;设置javaVersion = %% V)
)如果没有定义javaDir(
    Java的回声未找到
)其他(
    回声JAVA_HOME =%javaDir%
    回声JAVA_VERSION =%javaVersion%
)ENDLOCAL
暂停


解决方案

 关闭@echo
下JavaSoft的注册表数据的HKLM \\ SOFTWARE ::可能的位置
设置javaNativeVersion =
集java32ON64 = Wow6432Node \\::变量
:: %% K = HKLM \\ SOFTWARE子项在哪里搜索JavaSoft的关键
:: %% J = %%ķ下的Java运行时环境键全路径
:: %% V =当前的Java版本
:: %% E =路径的java设置javaDir =
设置javaVersion =
对于%% K的(%javaNativeVersion%%java32ON64%)做。如果没有定义javaDir(
    在(HKLM \\ SOFTWARE \\ %%〜kJavaSoft \\ Java运行时环境%%Ĵ
    )做/ F令牌= 3%% V(
        章查询%%〜J/ VCURRENTVERSION2 ^> NUL ^ |查找/ ICURRENTVERSION'
    )FOR / F做令牌= 2 *的%% D(
        章查询%%〜J□\\ %% V/ V的JavaHome2 ^> NUL ^ |发现/我的Ja​​vaHome'
    )做(设置javaDir = %%〜E和安培;设置javaVersion = %% V)
)如果没有定义javaDir(
    Java的回声未找到
    退出/ B 1
)其他(
    回声JAVA_HOME =%javaDir%
    设置JAVA_HOME =%javaDir%
    PATH%JAVA_HOME%\\ BIN;%PATH%
    java.exe的> NUL 2 - ;&放大器; 1 || (
        SETX JAVA_HOME%JAVA_HOME%
        SETX PATH%PATH%
    )
    回声JAVA_VERSION =%javaVersion%
)FOR / F标记^ = 2-5 ^ ^ delims = ^中%%Ĵ('的Java 2 -fullversion ^> ^&放大器; 1')不要@set-_。jver = %%Ĵ%%ķ% %L %% M
回声完整的Java版本%jver%
如果%jver%GTR 16445(
    回声Java版本是更高MR工具将无法安装
    出口/ B 2

Hi I need a batch script to check whether java home is available in the system and script to compare the java version

My requirements are

1.) Script needs to check whether java home is set in the system.I think "echo %JAVA_HOME%" will do it.But if Java Home is not available it needs to display a message showing "Java home is not available.Please set the java home in Computer>Properties>Variables path".

2.) It needs to check the java version in the system and if the java vesion is higher than 1.6_445 it needs to diplay in a message that "Java version is higher MR tool will not able to install.(I think for this one it needs to create an array and store the Java version values and it needs to compare the values.But I dont know how to write the code for it)Since the java version contains underscore the comparison will be a tough task I think.

Currently I'm using the below script but it is not at all satisfying my requirements.Can any one please help me to make a script to satisfying above requirements.Thanks in advance

echo off setlocal enableextensions disabledelayedexpansion

:: 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

解决方案

 @echo off
:: 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
    exit /b 1
) else (
    echo JAVA_HOME=%javaDir%
    set JAVA_HOME=%javaDir%
    PATH %JAVA_HOME%\bin;%PATH%
    java.exe >nul 2>&1 || (
        setx JAVA_HOME %JAVA_HOME%
        setx PATH %PATH%
    )
    echo  JAVA_VERSION=%javaVersion%
)

for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do @set "jver=%%j%%k%%l%%m"
echo full java version %jver%
if %jver% GTR  16445 (
    echo "Java version is higher MR tool will not able to install"
    exit /b 2
)

这篇关于批处理脚本来检查Java的家庭和比较的Java版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆