2014-07-15 2 views
1

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

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

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

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

в настоящее время я использую ниже скрипт, но это вовсе не удовлетворяющее мой requirements.Can любые один, пожалуйста, помогите мне сделать скрипт на удовлетворение выше requirements.Thanks заранее

эхо от 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 

ответ

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

Set PAUSE в конце – npocmaka

+0

добавил, но не работает – Chanthu

+0

@ user3400717 у вас есть 'SETX' в качестве команды на вашей системе? (просто введите setx в командной строке) – npocmaka

Смежные вопросы