我需要在Windows计算机上找到Java 64位的特定位置。我考虑过使用where java
查找所有可能的位置。下一步,我需要隔离以C:\Program Files\Java\...
开头的正确位置,然后执行以下命令:
cmd /K %var% -jar %~dp0XYZ.jar
这是查找随时间变化的Java路径的正确方法吗?如果是,如何获取从where
到变量的路径?
对于where
的输出,假定以下条件:
C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
C:\Program Files\Java\jdk1.8.0_144\bin\java.exe
C:\Program Files\Java\jdk1.8.0_144\jre\bin\java.exe
获取第二或第三结果无关紧要,因为在这种情况下两者均为64位。但由于我不能保证该输出,因此识别64位版本的唯一方法是使用C:\Program Files\Java\
答案 0 :(得分:0)
下面的bat
脚本(为说明起见)应该可以解决问题:
@ECHO OFF
rem SETLOCAL EnableExtensions DisableDelayedExpansion
set "_flagexe64=:\Program Files\Java\"
set "_javaexe64="
for /f "delims=" %%G in ('where java.exe') do (
rem next two lines for debugging only
echo checking "%%~G"
"%%~G" -version
if not defined _javaexe64 (
set "_javaexe64=%%~G"
call :check64
)
)
rem final check
if not defined _javaexe64 (
1>&2 echo sorry, no java.exe found under "%_flagexe64%"
goto :eof
)
rem java.exe found:
echo "%_javaexe64%"
goto :eof
:check64
call set "_aux=%%_javaexe64:%_flagexe64%=%%"
if "%_aux%" == "%_javaexe64%" set "_javaexe64="
goto :eof