How to get Java Version from batch script?

前端 未结 4 1386

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:43

    @echo off
    setlocal
    
    set VERSION6="1.6.0_21"
    for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do (
        @echo Output: %%g
        set JAVAVER=%%g
    )
    set JAVAVER=%JAVAVER:"=%
    @echo Output: %JAVAVER%
    
    for /f "delims=. tokens=1-3" %%v in ("%JAVAVER%") do (
        @echo Major: %%v
        @echo Minor: %%w
        @echo Build: %%x
    )
    
    endlocal
    

    In the first for loop, "tokens=3" says that we're going to just use the third token from the command output. Rather than redirect the output of the java -version command to a file, we can run this command within the for loop itself. The carets (^) are escape characters, and are needed so we can embed the >, & and | symbols in the command string.

    Within the body of the for loop, we set a new var, JAVAVER, so that we can do some manipulation of the version string later.

    The set JAVAVER=%JAVAVER:"=% command removes the double quotes from around the version string.

    The last for loop parses the java version string. delims=. says we're going to delimit tokens using periods. tokens=1-3 says we're going to pass the first three tokens from the string to the body of the loop. We can now get the components of the java version string using the explicit variable, %%v and the implied variables (next letters in the alphabet) %%w and %%x.

    When I run this on my system I get:

    Output: "1.6.0_24" 
    Output: 1.6.0_24
    Major: 1 
    Minor: 6 
    Build: 0_24
    

提交回复
热议问题