@echo offsetlocalset 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_24Major: 1 Minor: 6 Build: 0_24



