用于检查java版本和java主目录的脚本

时间:2014-07-10 13:08:38

标签: windows batch-file java-home

我是一名MR工具管理员我需要一个批处理脚本来满足以下要求

  1. 必须检查是否在Computer > properties (right click) > Advanced system settings > Advanced > Environment Variables中设置了Java home。

    如果Java home可用,则需要显示"Java home is available" else "Java home is not available"

  2. 必须检查使用的java版本,如果大于1.6.495,则必须显示"Java version is too high" else "Java version is compatible"

  3. 目前我正在使用下面给出的脚本... 有谁可以请帮助制作上述脚本?

    @echo off
    IF "%JAVA_HOME%" == "" (
        echo Enter path to JAVA_HOME: 
        set /p JAVA_HOME=
    ) ELSE (
        echo %JAVA_HOME%
    )
    

1 个答案:

答案 0 :(得分:1)

给它一个旋转...

我不太确定“java home is available”是什么意思。该脚本检查%JAVA_HOME%指向的目录是否包含bin\java.exe

棘手的一点是获得版本。我使用java -version的输出并使用FIND来获取第一行,就像我的系统上的java version "1.7.0_55"一样。 java -version将此写入stderr而不是stdout,因此错误重定向(2>& 1将错误输出重定向到标准输出),然后再导向FIND。然后将该混乱重定向到临时文件中。然后我使用SET /p从temp中重定向的输入将该输出放入变量。

@echo off
SETLOCAL
SET TEMPFILE=%TEMP%\tmpfile
IF "%JAVA_HOME%" == "" (
    echo Enter path to JAVA_HOME:
    set /p JAVA_HOME=
) ELSE (
    echo JAVA_HOME = %JAVA_HOME%
)

IF EXIST "%JAVA_HOME%\bin\java.exe" (
    ECHO Java home is available
) ELSE ECHO Java home is not available

"%JAVA_HOME%\bin\java" -version 2>& 1 | FIND "java version" > %TEMPFILE%
SET /p VERSIONSTRING= < %TEMPFILE%
DEL %TEMPFILE%
SET MAJORVERSION=%VERSIONSTRING:~14,1%
SET MINORVERSION=%VERSIONSTRING:~16,1%
SET UPDATEVERSION=%VERSIONSTRING:~20,-1%
IF %MAJORVERSION% GTR 1 GOTO TOOHIGH
IF %MINORVERSION% GTR 6 GOTO TOOHIGH
IF %UPDATEVERSION% GTR 495 GOTO TOOHIGH
ECHO Java version is compatible.
GOTO EXIT

:TOOHIGH
ECHO Java version is too high.

:EXIT
ENDLOCAL