如何从批处理脚本获取Java版本?
我正在尝试从下面给出的Java版本输出中获取‘6’
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)
同样,我写了这个批处理脚本
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
显示“ 1.6.0_21”
有人可以指导我正确的方向吗?我不太熟悉for /f
。
回答:
@echo offsetlocal
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
在第一个for
循环中,"tokens=3"
说我们将仅使用命令输出中的第三个标记。无需将java
-version命令的输出重定向到文件,我们可以在for
循环本身中运行此命令。插入记号(^
)是转义字符,并且需要,所以我们可以嵌入>
,&
并|
在命令字符串符号。
在for
循环体内,我们设置了一个新的var JAVAVER
,以便稍后可以对版本字符串进行一些操作。
该set JAVAVER=%JAVAVER:"=%
命令从版本字符串中删除双引号。
最后一个for
循环解析Java版本字符串。delims=.
说我们将使用句点来分隔令牌。tokens=1-3
说我们将把字符串的前三个标记传递给循环的主体。现在,我们可以使用显式变量,%%v
隐含变量(字母中的下一个字母)%%w
和来获取Java版本字符串的组件%%x
。
当我在系统上运行它时,我得到:
Output: "1.6.0_24" Output: 1.6.0_24
Major: 1
Minor: 6
Build: 0_24
以上是 如何从批处理脚本获取Java版本? 的全部内容, 来源链接: utcz.com/qa/422624.html