在Windows批处理文件中,可靠地查找JRE安装路径以运行Java程序。

10 浏览
0 Comments

在Windows批处理文件中,可靠地查找JRE安装路径以运行Java程序。

在Windows上安装最新的JRE 7时,不再将java命令添加到系统路径中。因此,在批处理文件中调用java --version会失败(尽管已经安装了java.com上的Java)。\n在Windows批处理文件中,有什么可靠的方法来查找java命令的安装目录?\n我在以下位置看到过它:\n

    \n

  • C:\\Program Files\\Java\\jre6\\bin\\java.exe
  • \n

  • C:\\Program Files\\Java\\jre7\\bin\\java.exe
  • \n

  • C:\\Program Files (x86)\\Java\\jre7\\bin\\java.exe
  • \n

  • 尚未尝试JRE 8。
  • \n

\n注意:如果存在多个位置,我希望使用默认的位置(或最新的位置 - 我不在乎)。

0
0 Comments

可靠地查找Windows批处理文件中的JRE安装以运行Java程序的方法

问题的原因:

在Windows批处理文件中,需要找到Java Runtime Environment(JRE)的安装路径,以便能够运行Java程序。然而,由于Windows系统的不确定性,无法确定JRE的安装路径。因此,需要一种可靠的方法来查找JRE的安装位置。

解决方法:

以下是如何查找JRE安装路径的方法:

1. 在批处理文件中使用以下命令:

Dir c:\java.exe /a/s

这将在整个驱动器上搜索JRE的安装路径。

2. 可以将其放在for循环中。在for循环中,需要将变量`%A`更改为`%%A`。

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

这将找到JRE的安装路径,并将日期、月份和年份分别存储在不同的变量中。

3. 可以使用以下命令来获取更多关于for循环、dir命令和findstr命令的信息:

For /?

dir /?

findstr /?

这将提供有关使用这些命令的详细说明和示例。

通过以上方法,可以可靠地在Windows批处理文件中找到JRE的安装路径,并使用它来运行Java程序。

0
0 Comments

可靠的方法来查找Windows bat文件中的JRE安装以运行Java程序

在Windows上运行Java程序之前,需要先找到JRE的安装位置。下面的内容提供了一种可靠的方法来查找JRE的安装位置,并解决了可能出现的一些问题。

首先,使用以下代码询问Windows JRE的安装位置:

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

上述代码首先通过查询注册表获取当前Java版本,然后获取该版本的Java安装路径。如果找不到Java版本或安装路径,则会输出相应的错误信息。

接下来,解释一下代码中的一些关键部分:

- `setlocal enableextensions disabledelayedexpansion`:`setlocal`命令保护环境变量不受在`setlocal/endlocal`内部所做的更改影响。`enableextensions`通常不需要,因为扩展默认已启用,但这样做只是一个良好的习惯,以确保不会出现问题。`disabledelayedexpansion`被包含在内,以防止在给变量赋值时出现一些解析错误,例如变量的值包含感叹号标记(将被解析/解释/移除)。

在使用这段代码时,有用户提到在一台Windows 8的机器上运行最新版本的Java(1.7)时,注册表键不是`HKLM\SOFTWARE\JavaSoft\Java Runtime Environment`,而是`HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment`。对此,可以通过额外检查该注册表键来解决:

if not exist "HKLM\SOFTWARE\JavaSoft\Java Runtime Environment" (

set "javaKey=HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment"

)

这将在默认的注册表键找不到时,切换到另一个注册表键进行查询。

总结起来,通过这段代码,可以可靠地找到Windows系统中JRE的安装位置,以便在bat文件中运行Java程序。如果在默认的注册表键中找不到JRE安装位置,还会自动切换到另一个注册表键进行查询。这样可以确保对于不同的Windows系统和JRE安装方式,都可以找到正确的JRE安装位置。

0