java脚本有几个版本,如何从批处理脚本获取Java版本?

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 HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)

For the same I wrote this batch script

set VERSION6="1.6.0_21"

java -version 2>&1 | findstr "version" >ab.txt

for /f "tokens=3" %%g in (ab.txt) do (

if not %%g == %VERSION6% echo %%g

echo %%g

)

%%g displays "1.6.0_21"

May someone guide me to correct direction? I am not much familiar with for /f.

解决方案

@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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值