从批处理文件中发现Java安装在哪里?
我想从批处理脚本设置 JAVA_HOME 变量
I want to set the JAVA_HOME variable from a batch script
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想从批处理脚本设置 JAVA_HOME 变量
I want to set the JAVA_HOME variable from a batch script
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(8)
如果 JAVA_HOME 尚未设置,并且您想要设置它,那么您可能需要执行类似的操作,
该操作将为您提供包含文件 java.exe 的所有目录的列表。 从那里您可以将该输出传送到另一个命令,该命令解析结果并选择其中一个目录,然后使用它来设置 JAVA_HOME 变量。
If JAVA_HOME isn't already set, and you want to set it, then you probably need to do something like
which will give you a list of all directories containing the file java.exe. From there you can pipe that output to another command that parses the results and selects one of those directories, then uses it to set the JAVA_HOME variable.
Java 在安装时应该设置 JAVA_HOME 变量。 使用它来查找 Java 的位置:
Java's supposed to set up the JAVA_HOME variable when it's installed. Use this to find the location of Java:
这是一个方便的小批处理文件,它将搜索路径中的所有内容以查找文件的第一次出现。 神奇的一点是 for 循环中的 %%~dp$PATH:i%%i 。 %%~dp 将仅将下一个变量扩展为驱动器号和路径。 $PATH:i 在路径中搜索第一次出现的 %%i,这是传递到 for 循环的文件名。
示例:Where.bat
Here is a handy little batch file that will search everything in your path for the first occurance of a file. The magical little bit is the %%~dp$PATH:i%%i in the for loop. %%~dp will expand the next variable to the drive letter and path only. The $PATH:i searches the path for the first occurance of %%i which is the filename that is passed into the for loop.
example: Where.bat
这不会搜索整个硬盘驱动器。 它只搜索父目录树,因此比使用“dir java.exe /B /S”要快得多。
This doesn't search the entire hard drive. It only searches the parent directory tree and so its much faster than using "dir java.exe /B /S".
此代码片段将在当前路径中搜索 java.exe,并打印出找到它的位置:
在我的系统上,这给了我
使用此可以设置 JAVA_HOME,如下所示:
This snippet will search the current PATH for java.exe, and print out where it was found:
On my system this gives me
Using this you can set JAVA_HOME as follows:
此解决方案取决于安装在 %ProgramFiles%\Java 下的 JDK,例如 C:\Program Files\Java\jdk1.6.0_18。 您可以将“set JDK_Version=1.6”行更改为您要使用的版本,例如“set JDK_Version=1.5”。
假设 JDK 的最新版本位于列表底部 (jdk%jdk_Version%*),则可用的最新版本应设置为 JAVA_HOME。 如果找不到 JDK,JAVA_HOME 将不会更改。 如果找不到 JDK 并且 JAVA_HOME 没有值,脚本将显示错误消息。
This solution depends on the JDK being installed under %ProgramFiles%\Java, for example C:\Program Files\Java\jdk1.6.0_18. You can change the line "set JDK_Version=1.6" to the version you want to use such as "set JDK_Version=1.5".
Assuming that the latest version of JDK would be at the bottom of the list (jdk%jdk_Version%*) the latest version available should be set as JAVA_HOME. If the JDK could not be found JAVA_HOME will not be changed. If the JDK could not be found and JAVA_HOME doesn't have a value the script will display an error message.
您可以使用注册表中存储的值自动发现 Java 的安装位置并设置 JAVA_HOME 变量。
在此位置有一个名为 CurrentVersion 的键。 此版本按名称引用此级别的目录之一。 打开该目录会公开另一个名为 JavaHome 的键。 JavaHome 的值是一个文件系统路径,可用于定义环境变量 JAVA_HOME。
在批处理文件中,您可以执行以下操作:
如果您想了解更多信息,我已经编写了 教程 描述构建批处理文件以自动发现 JAVA_HOME 所需的内容。
You can use values stored in the registry to automatically discover where Java is installed and setup the JAVA_HOME variable.
At this location is a Key called CurrentVersion. This version references one of the directories at this level by name. Opening the directory exposes another key called JavaHome. The value of JavaHome is a file system path that can be used to define your environment variable JAVA_HOME.
Within a batch file you can do something like:
If you want to read more, I've written a tutorial describing what is needed to construct a batch file to auto-discover JAVA_HOME.
虽然不完美,但您可以使用以下命令来发现当前的 JRE 文件夹:
如果它是您想要的 JDK,请使用:
对于基于检查 Windows 注册表的更强大的解决方案,请使用:
对于 JDK,您将需要此行:
While not perfect, you can use the following to discover the current JRE folder:
If it's the JDK you want, use:
For a more robust solution based on checking the Windows Registry, use:
For the JDK, you'll need this line instead: