[英]identify if java cannot be executed in windows batch script
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. 我写了下面的批处理脚本,如果环境中不存在
JAVA_HOME
路径,它会询问它,然后验证Java版本。 but before identifying java version it should also check whether java
is present in the path (can be executed) or not. 但是在标识Java版本之前,还应该检查路径中是否存在
java
(可以执行)。 Please help me figure out if java -version
can be executed or not and display proper message 请帮我弄清楚是否可以执行
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 of the examples of invalid condition would be, instead of providing JAVA_HOME
ie, e:\\csm\\java I gave it as e:\\csm\\java\\jre\\bin which in this case should display proper error message that please provide a JAVA_HOME
path 无效条件的示例之一将是,而不是提供
JAVA_HOME
即e:\\ csm \\ java,我将其指定为e:\\ csm \\ java \\ jre \\ bin,在这种情况下应显示正确的错误消息, please provide a JAVA_HOME
路径
To check the existence of a program in the PATH
, windows batch provides the ~%PATH:
option of the SET
command. 要检查
PATH
是否存在程序,Windows批处理提供了SET
命令的~%PATH:
选项。 See HELP CALL
or HELP FOR
. 请参阅
HELP CALL
或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. 在此示例中,如果
java.exe
在PATH
,它将回显其完整的文件规范。
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
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.