Пакетный скрипт для проверки java home

Мне нужно проверить, доступен ли java home в моей системе, и если java home недоступен, ему нужно отобразить сообщение об ошибке и проверить, что версия java меньше 1.7. Если она больше 1.7, она должна отображать ошибка. Это возможно. В настоящее время я использую приведенный ниже сценарий. Может ли кто-нибудь предложить, какие изменения необходимо внести в сценарий. Или нужен ли какой-либо новый сценарий. заранее спасибо

@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

person Chanthu    schedule 09.07.2014    source источник
comment
А какой у тебя вопрос?   -  person a_horse_with_no_name    schedule 09.07.2014
comment
Привет, мне нужен пакетный скрипт с вышеуказанными предварительными условиями. Мой вышеприведенный скрипт отображает только домашнюю версию Java и версию Java.   -  person Chanthu    schedule 09.07.2014


Ответы (1)


Вы можете использовать LSS, GRT и EQU и так далее для сравнения строки в пакете.

  • EQU = равно
  • NEQ = Не равно
  • LSS = меньше чем
  • LEQ = Меньше или равно
  • GTR = больше, чем
  • GEQ = больше или равно

Поскольку у вас есть информация о версии в %javaVersion%, вам нужно просто отобразить сообщение об ошибке.

Вы можете изменить свой код на:

if not defined javaDir (
    echo Java not found
) else (
    echo JAVA_HOME="%javaDir%"
    echo JAVA_VERSION="%javaVersion%"
    if "%javaVersion%" LSS "1.7" (
        echo Java version is too low!
        goto exit
    ) 
    if "%javaVersion%" GTR "1.7" (
        echo JAVA version is too high!
        goto exit
    )
)

:exit
endlocal
pause
person Sid Zhang    schedule 10.07.2014
comment
Спасибо Сиду Чжану за ответ. Но если java home не установлен в системе, он должен показать сообщение об ошибке. Возможно ли это с этим сегментом кода. Какие изменения мне нужно внести - person Chanthu; 10.07.2014
comment
Также он показывает значение java home на выходе, даже если java home не установлен в системе. - person Chanthu; 10.07.2014
comment
@user3400717 user3400717 Набор Java Home в HKLM\SOFTWARE\JavaSoft\Java Runtime Environment может отличаться от того, что указано в переменных среды. Я предлагаю вам использовать этот способ для установки JAVA_HOME. chriskopec.com/blog/2009/jun /15/ - person Sid Zhang; 10.07.2014