首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理脚本,以检查系统中是否存在Java主程序,并检查java版本

批处理脚本,以检查系统中是否存在Java主程序,并检查java版本
EN

Stack Overflow用户
提问于 2014-07-04 09:06:36
回答 1查看 2.4K关注 0票数 1

是否有任何方法可以编写aa批处理脚本来检查java home是否存在于环境中以及java版本是否在7之上?

代码语言:javascript
复制
@echo off
IF "%JAVA_HOME%" == "" (
    echo Enter path to JAVA_HOME: 
    set /p JAVA_HOME=
) ELSE (
    echo %JAVA_HOME%
)

我使用上面的脚本来检查java home.But,它没有给出任何适当的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-04 09:16:09

编辑了 2017/11/16以适应新的JRE注册表位置。原来的答案在线下

代码语言:javascript
复制
@echo off 
    setlocal enableextensions disabledelayedexpansion

    :: for variables
    ::    %%L = possible locations under HKLM\SOFTWARE of JavaSoft registry data
    ::          note: the list includes native and redirected locations
    ::    %%J = possible locations under %%L where to find the JRE information
    ::          note: the list is sorted from newer to older locations
    ::    %%k = The generated JRE root key to check
    ::    %%v = current java version
    ::    %%e = path to java    

    for %%L in ( 
        "" "Wow6432Node\" 
    ) do for %%J in ( 
        "JRE" "Java Runtime Environment"
    ) do if not defined javaDir (
        for %%k in (
            "HKLM\SOFTWARE\%%~LJavaSoft\%%~J"
        ) do for /f "tokens=3" %%v in (
            'reg query "%%~k" /v "CurrentVersion" 2^>nul ^| find /i "CurrentVersion"'
        ) do for /f "tokens=2,*" %%d in (
            'reg query "%%~k\%%v" /v "JavaHome"   2^>nul ^| find /i "JavaHome"'
        ) do ( set "javaDir=%%~e" & set "javaVersion=%%v" )
    )

    if not defined javaDir (
        echo Java not found
    ) else (
        echo JAVA_HOME="%javaDir%"
        echo JAVA_VERSION="%javaVersion%"
    )

    pause

原始答案

代码语言:javascript
复制
if defined JAVA_HOME (
    echo JAVA_HOME="%JAVA_HOME%"
) else (
    echo JAVA_HOME is not defined 
)

但是,这不会告诉您(也不会询问用户)是否安装了java或它是什么版本。

如果安装了java,您可以问windows (它存储在注册表中)它在哪里,有什么版本?

代码语言:javascript
复制
@echo off 
    setlocal enableextensions disabledelayedexpansion

    :: possible locations under HKLM\SOFTWARE of JavaSoft registry data
    set "javaNativeVersion="
    set "java32ON64=Wow6432Node\"

    :: for variables
    ::    %%k = HKLM\SOFTWARE subkeys where to search for JavaSoft key
    ::    %%j = full path of "Java Runtime Environment" key under %%k
    ::    %%v = current java version
    ::    %%e = path to java

    set "javaDir="
    set "javaVersion="
    for %%k in ( "%javaNativeVersion%" "%java32ON64%") do if not defined javaDir (
        for %%j in (
            "HKLM\SOFTWARE\%%~kJavaSoft\Java Runtime Environment"
        ) do for /f "tokens=3" %%v in (
            'reg query "%%~j" /v "CurrentVersion" 2^>nul ^| find /i "CurrentVersion"'
        ) do for /f "tokens=2,*" %%d in (
            'reg query "%%~j\%%v" /v "JavaHome"   2^>nul ^| find /i "JavaHome"'
        ) do ( set "javaDir=%%~e" & set "javaVersion=%%v" )
    )

    if not defined javaDir (
        echo Java not found
    ) else (
        echo JAVA_HOME="%javaDir%"
        echo JAVA_VERSION="%javaVersion%"
    )

    endlocal
    pause
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24570595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档