I’m running a program on a Windows machine that needs JAVA_HOME to be set. Because I’m running it with just a JRE (no JDK installed) the JAVA_HOME environment variable isn’t set (the JDK installer usually creates the JAVA_HOME environment variable). Because I don’t want to modify my scripts or my environment manually every time the JRE decides to update (pretty often), I created a script that sets the JAVA_HOME variable based on the path of java.exe.
The batch script requires the path of java.exe to be in the PATH. The Oracle JRE installer usually does this for you.
@echo off :: Find java.exe symlink (C:\ProgramData\Oracle\Java\java.exe) for /f %%i in ('where java.exe') do set java_lnk=%%i :: Find symlink target for /f "tokens=2 delims=" %%h in ('dir %java_lnk%') do set java_dir=%%h :: Find parent directory for %%a in ("%java_dir%\..") do set "JAVA_HOME=%%~dpa" :: Remove trailing slash IF %JAVA_HOME:~-1%==\ SET parent=%JAVA_HOME:~0,-1%