определить, если Java не может быть выполнен в пакетном скрипте Windows - PullRequest
0 голосов
/ 26 сентября 2011

Я написал приведенный ниже пакетный скрипт, который запрашивает путь JAVA_HOME, если его нет в окружении, а затем проверяет версию Java. но перед определением версии Java следует также проверить, присутствует ли в пути java (может быть выполнено) или нет. Пожалуйста, помогите мне выяснить, можно ли выполнить java -version или нет, и отобразить правильное сообщение

@echo off
setlocal

set VERSION5="1.5"

IF "%JAVA_HOME%" == "" (
echo Enter path to JAVA_HOME: 
set /p JAVA_HOME=
goto check_java_version
) ELSE (
echo Using %JAVA_HOME%
goto check_java_version
)


:check_java_version
 for /f "tokens=3" %%g in ('%JAVA_HOME%\jre\bin\java -version 2^>^&1 ^| findstr /i "version"') do (

set JAVAVER=%%g
)

set JAVAVER=%JAVAVER:"=%

set JAVAVER=%JAVAVER:java version =%

for /f "delims=. tokens=1-3" %%v in ("%JAVAVER%") do (
set VER=%%w
)

if not "%VER%" GEQ "5" goto wrong_version
set JAVA_BIN=%JAVA_HOME%\jre\bin
goto correct_java_version


:correct_java_version
REM echo JAVA Version is ok.
set JAVA_LIB=%cd%/lib

%JAVA_BIN%/java -cp %JAVA_LIB%/csm-runtime-1.0.jar;%JAVA_LIB%/groovy-all-1.8.1.jar;%JAVA_LIB%/commons-beanutils-1.8.3.jar;%JAVA_LIB%/csm-dbutil-1.0.jar;%JAVA_LIB%/commons-exec-1.1.jar;%JAVA_LIB%/log4j-1.2.8.jar;%JAVA_LIB%/commons-cli-1.2.jar -Dlog4j.configuration=com/ABC/csm/log4j.xml -Dendorsed_plugins_dir=./plugins    com.ABC.csm.CSMMain %* 
goto end_java_version

:wrong_version
echo Current JDK Version %VER%
echo Expected JDK %VERSION5% or greater. Please fix your SSATOP and try again.
goto end_java_version

:no_java
echo No JDK found in %JAVA_HOME%.
goto wrong_version

:end_java_version
endlocal

1 из примеров недопустимого условия будет вместо предоставления JAVA_HOME, т. Е. E: \ csm \ java. Я дал его как e: \ csm \ java \ jre \ bin, который в этом случае должен отображать правильное сообщение об ошибке. этот please provide a JAVA_HOME путь

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Чтобы проверить наличие программы в PATH, пакет Windows предоставляет опцию ~%PATH: команды SET. См. HELP CALL или HELP FOR.

Используйте этот фрагмент кода в качестве отправной точки.

:ProgInPath
set PROG=%~$PATH:1
goto :eof

и используйте его вот так

call :ProgInPath java.exe
IF "%PROG%" == "" (
  echo Java.exe not found
) else (
  echo. %PROG%
)

в этом примере, если java.exe находится в PATH, он отображает его полную спецификацию файла.

0 голосов
/ 26 сентября 2011

Я использовал приведенный ниже фрагмент, и это решило мою проблему

:check_java_existence
IF EXIST %JAVA_HOME%\jre\bin\java.exe (
echo java exists
) ELSE (
echo java does not exists
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...