How to get Java Version from batch script?

前端 未结 4 1387

I am trying to get \'6\' out of the java version output given below

java version \"1.6.0_21\"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSp         


        
4条回答
  •  眼角桃花
    2020-12-03 18:45

    I've made some modification to Patrick's answer so it works with Java 9, 10, etc. This returns minor version for 1.x, and major version for Java 9, 10, etc.

    @echo off
    setlocal
    
    rem We use the value the JAVACMD environment variable, if defined
    rem and then try JAVA_HOME
    set "_JAVACMD=%JAVACMD%"
    if "%_JAVACMD"=="" (
      if not "%JAVA_HOME%"=="" (
        if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"
      )
    )
    if "%_JAVACMD%"=="" set _JAVACMD=java
    
    rem Parses x out of 1.x; for example 8 out of java version 1.8.0_xx
    rem Otherwise, parses the major version; 9 out of java version 9-ea
    set JAVA_VERSION=0
    for /f "tokens=3" %%g in ('%_JAVACMD% -Xms32M -Xmx32M -version 2^>^&1 ^| findstr /i "version"') do (
      set JAVA_VERSION=%%g
    )
    set JAVA_VERSION=%JAVA_VERSION:"=%
    for /f "delims=.-_ tokens=1-2" %%v in ("%JAVA_VERSION%") do (
      if /I "%%v" EQU "1" (
        set JAVA_VERSION=%%w
      ) else (
        set JAVA_VERSION=%%v
      )
    )
    
    @echo %JAVA_VERSION%
    
    endlocal
    

提交回复
热议问题