开发者

identify if java cannot be executed in windows batch script

开发者 https://www.devze.com 2023-04-08 21:22 出处:网络
I wrote the below batch script which asks for a JAVA_HOME path if its not present in environment, and then it verifies the java version. but before identifying java version it should also check whethe

I wrote the below batch script which asks for a JAVA_HOME path if its not present in environment, and then it verifies the java version. but before identifying java version it should also check whether java is present in the path (can be executed) or not. Please help me figure out if java -version can be executed or not and display proper message

@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 of the examples of invalid condition would be, instead of providing JAVA_HOME i.e., e:\csm\java I gave it as e:\csm\java\jre\bin which in this case should display proper error 开发者_JAVA技巧message that please provide a JAVA_HOME path


To check the existence of a program in the PATH, windows batch provides the ~%PATH: option of the SET command. See HELP CALL or HELP FOR.

Use this piece of code as a starting point.

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

and use it like this

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

in this example, if java.exe is in the PATH, it echoes its complete filespec.


I used the below snippet and it solved my problem

:check_java_existence
IF EXIST %JAVA_HOME%\jre\bin\java.exe (
echo java exists
) ELSE (
echo java does not exists
)
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号