Привет, мне нужен пакетный скрипт, чтобы проверить, доступен ли 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
@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
)