Get java version from batch file

batch-file, cmd, command, version

Solution

for /f tokens^=2-5^ delims^=.-_^" %j in ('java -fullversion 2^>^&1') do @set "jver=%j%k%l%m"

This will store the java version into `jver` variable and as integer And you can use it for comparisons .E.G

if %jver% LSS 16000 echo not supported version

.You can use more major version by removing %k and %l and %m.This command prompt version.

For .bat use this:

@echo off
PATH %PATH%;%JAVA_HOME%\bin\
for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m"

According to my tests this is the fastest way to get the java version from bat (as it uses only internal commands and not external ones as `FIND`,`FINDSTR` and does not use `GOTO` which also can slow the script). Some JDK vendors does not support `-fullversion` switch or their implementation is not the same as this one provided by Oracle (better avoid them).

Problem

How to get java version and want to get '6' out of java version from batch file. I tried below script, but it didn't work. ``` REM check java exists using JAVA_HOME system variable if "%JAVA_HOME%" == "" ( ECHO Installing java start /w jdk.exe /s SETX -m JAVA_HOME "C:\Program Files\Java\jdk1.6.0_31" ECHO java installed successfully ) ELSE ( ECHO checking java version goto check_java_version ) REM check java version using JAVA_HOME system variable :check_java_version set PATH=%PATH%;%JAVA_HOME%\bin for /f tokens^=2-5^ delims^=.-_^" %%j in ('%JAVA_HOME%/bin/java -version 2^>^&1') do set "jver=%%j%%k%%l%%m" echo %jver% ``` JAVA_HOME has "C:\Program Files\Java\jdk1.6.0_31" value.

Original source