【问题标题】:A script to check the java version and java home检查 java 版本和 java home 的脚本
【发布时间】:2014-07-10 13:08:38
【问题描述】:

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

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

    如果 Java 主页可用,则需要显示 "Java home is available" 否则 "Java home is not available"。

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

目前我正在使用下面给出的脚本... 任何人都可以请帮助制作上述脚本吗?

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

【问题讨论】:

    标签: windows batch-file java-home


    【解决方案1】:

    试一试……

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

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

    @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
    

    【讨论】:

    • Hai Beel:感谢您提供的宝贵帮助,但是当我运行脚本时,它会询问“输入 Java 主页的路径”,我该怎么办?我需要给出哪条路径。我要避免这种情况,还需要检查系统中是否设置了 java home 并需要显示错误。此脚本需要进行哪些修改。
    • Manu,那部分来自你一开始提供的脚本。这意味着该机器上尚未设置 JAVA_HOME。您是否只想显示错误?如所写,您应该为其提供包含 JRE 的目录的路径(在我的机器上,c:\program files\java\jdk1.7.0_55)。听上去好像你的深度不够——你在为谁编写这个程序?
    • 嗨 beel 我不熟悉批处理脚本和 windows 环境。因为我在 unix 环境中工作。我的实际要求是如果我们要走这条路:计算机 > 属性(右键单击)> 高级系统设置 > 高级 > 环境变量“c:\program files\java\jre”必须设置为 java home 值。如果在提到的路径(在环境变量中)中定义了值,则脚本需要显示 java home 可用。这可能吗?感谢您的耐心和回复
    • Manu,我从脚本中删除了 jre(这是我的错误)。该脚本现在将适用于您描述的情况。这能满足您的需要吗?如果没有,请在顶部编辑您的问题以澄清。
    • Beel: 仍然要求输入 java home 的路径。我需要在这里提到哪个路径?
    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 2011-11-12
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    相关资源
    最近更新 更多