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

1

Привет, мне нужен пакетный скрипт, чтобы проверить, доступен ли java-сервер в системе и скрипт для сравнения версии java

Мои требования

1.) Сценарий должен проверить, установлен ли java home в системе. Я думаю, что "echo% JAVA_HOME%" это сделает. Но если Java Home недоступен, ему нужно отобразить сообщение, показывающее, что "Java-дом недоступен. установите java-дом в "Компьютер"> "Свойства"> "Пути переменных".

2.) Нужно проверить версию java в системе, и если java vesion выше 1.6_445, ему нужно выполнить diplay в сообщении, что "версия Java выше, инструмент MR не сможет установить (я думаю, для этого ему нужно создать массив и сохранить значения версии Java, и ему нужно сравнить значения. Но я не знаю, как написать код для него). Поскольку версия java содержит подчеркивание, сравнение будет сложной задачей, я думаю.

В настоящее время я использую приведенный ниже сценарий, но он совсем не удовлетворяет моим требованиям. Может кто-нибудь, пожалуйста, помогите мне сделать скрипт для удовлетворения вышеуказанных требований. Спасибо заранее

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
Теги:
batch-file
batch-processing
java-home

1 ответ

1
Лучший ответ
 @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
)
  • 0
    Установите PAUSE в конце
  • 0
    добавлено но не работает
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню