确定是否java的不能在寡妇批处理脚本执行 [英] identify if java cannot be executed in widows batch script

查看:179
本文介绍了确定是否java的不能在寡妇批处理脚本执行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了下面的批处理脚本,询问了 JAVA_HOME 路径,如果它不是present环境,然后验证Java版本。但识别Java版本之前,还应该检查的Java 是否在路径present(可以执行)或不。请帮我找出如果 Java的版本可以执行与否,并显示正确的消息

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人,而不是提供 JAVA_HOME 即即:\\ CSM \\ java中我把它作为E:\\ CSM \\ java的\\ JRE \\ BIN在这种情况下应该显示正确的错误消息,请提供JAVA_HOME 路径

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 message that please provide a JAVA_HOME path

推荐答案

要检查程序中存在的 PATH ,Windows批处理提供了〜%PATH: SET 命令的选项。参见 HELP CALL 的帮助

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.

使用这块code作为一个起点。

Use this piece of code as a starting point.

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

和使用它像这样

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

在这个例子中,如果的java.exe PATH ,它呼应其完整的文件规范。

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

这篇关于确定是否java的不能在寡妇批处理脚本执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆