找到/查找.exe文件(javaw.exe)然后使用elevate.exe并运行jar

时间:2012-10-05 10:51:20

标签: batch-file cmd find executable-jar javaw

我试图让标题尽可能具有描述性,但我基本上试图找到javaw.exe,因为当我启动我的JAR时,cmd只找到java.exe,但是提示窗口很丑,我不知道希望它在那里。

什么有效:

java -jar myJar.jar

我正在尝试做什么

javaw -jar myJar.jar

什么也有效:

JAVAWPATH\javaw.exe -jar myJar.jar

我正在尝试让程序自动适应任何计算机,因为我不知道javaw是否总是在同一个位置。

所以我设法使用

找到一堆“javaw.exe”文件
WHERE /R c:\ *javaw.exe 

我想选择一个返回的路径并设置某种字符串变量,然后我可以使用elevate MYstringPATHtoJAVAW -jar myJar.jar

1 个答案:

答案 0 :(得分:1)

我编写了一个批处理脚本,通过注册表找到java instalation文件夹:

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@ECHO OFF

:: Export java settings from registry to a temporary file
START /W REGEDIT /E %Temp%.\java.reg "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft"



:: Find java location
FOR /F "tokens=1* delims==" %%A IN ('TYPE %Temp%.\java.reg ^| FIND "INSTALLDIR"') DO SET JAVA_HOME=%%B
SET JAVA_HOME=%JAVA_HOME:"=%
SET JAVA_HOME=%JAVA_HOME:\\=\%
SET JAVA_HOME

:: Get java version
FOR /F "tokens=1* delims==" %%A IN ('TYPE %Temp%.\java.reg ^| FIND "CurrentVersion"') DO SET JAVA_VERSION=%%B
SET JAVA_VERSION=%JAVA_VERSION:"=%
SET JAVA_VERSION
SET JAVA_VERSION=%JAVA_VERSION:.=%
SET JAVA_VERSION=%JAVA_VERSION:_=%
SET /A JAVA_VERSION=%JAVA_VERSION%

:: Delete temp file
@DEL %Temp%.\java.reg /S /Q > NUL 2>&1

:: Check java version compatibility
IF %JAVA_VERSION% LSS 16020 (
ECHO.
ECHO YOU NEED AT LEAST JAVA WITH VERSION 1.6.0_20 -- this is just an example echo.
GOTO :EOF
)

PAUSE
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

我已将它用作base。但如果已安装的java是64位(是的,我必须更新此脚本......),它可能无法正常工作,但它可以轻松更新.Hope这对你有帮助。