Actually, %JAVA_HOME%
isn't defined on my machine. If not on yours either, or if you don't want to depend on it, you could search %PROGRAMFILES(x86)%\java
recursively for java.exe
with the highest creation date.
@echo off
setlocal enabledelayedexpansion
:: find newest java.exe
<NUL set /P "=Searching for Java executable... "
for /f "delims=" %%I in ('dir /s /b "%PROGRAMFILES(x86)%\java\*java.exe"') do (
set "jtest=%%I"
for /f "tokens=2 delims=.=" %%a in (
'wmic datafile where "name='!jtest:\=\\!'" get CreationDate /format:list ^| find "="'
) do (
set "created_test=%%a"
set "created_test=!created_test:~0,-4!"
)
if not defined created (
set "javaexe=!jtest!"
set "created=!created_test!"
) else if !created_test! gtr !created! (
set "javaexe=!jtest!"
set "created=!created_test!"
)
)
if not defined javaexe (
echo Not found. Is Java installed?
goto :EOF
) else (
setlocal disabledelayedexpansion & echo Found! & endlocal
echo !javaexe!
echo Relax and enjoy the show.
)