在Windows bat文件中找到JRE安装的可靠方法来运行java程序

时间:2014-06-30 09:24:03

标签: java batch-file window

在Windows上安装最新的JRE 7时,它不再将命令java添加到系统路径。因此,在这种情况下只调用bat文件中的java --version失败(尽管安装了java.com中的Java)。

在Windows bat文件中找到java命令安装目录的可靠方法是什么?

我在以下地点看到过:

  • C:\Program Files\Java\jre6\bin\java.exe
  • C:\Program Files\Java\jre7\bin\java.exe
  • C:\Program Files (x86)\Java\jre7\bin\java.exe
  • 尚未尝试过JRE 8.

注意:如果有多个,我想要默认(或最新 - 我不在乎)。

2 个答案:

答案 0 :(得分:3)

如果已安装,请询问窗口

@echo off 
    setlocal enableextensions disabledelayedexpansion

    rem Where to find java information in registry
    set "javaKey=HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"

    rem Get current java version
    set "javaVersion="
    for /f "tokens=3" %%v in ('reg query "%javaKey%" /v "CurrentVersion" 2^>nul') do set "javaVersion=%%v"

    rem Test if a java version has been found
    if not defined javaVersion (
        echo Java version not found
        goto endProcess
    )

    rem Get java home for current java version
    set "javaDir="
    for /f "tokens=2,*" %%d in ('reg query "%javaKey%\%javaVersion%" /v "JavaHome" 2^>nul') do set "javaDir=%%e"

    if not defined javaDir (
        echo Java directory not found
    ) else (
        echo JAVA_HOME : %javaDir%
    )

:endProcess 
    endlocal

答案 1 :(得分:1)

这是找到它们的方法。

Dir c:\java.exe /a/s 

搜索整个驱动​​器。

你可以把它放在for循环中。 (在for循环中%A变为%%A in a batch)

@for /f "tokens=1-8 delims=/ " %A in ('dir "c:\program files\java.exe" /a /s^|findstr /i /v /r "DIR VOL \(s\) Listed"') do echo day %A month %B Year %C Name %G  

找到它并将日月份放入单独的变量中。

For /?
dir /?
findstr /?