我需要从下面的1.6.0_26
输出
java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)
请帮助我获取1.6.0_26
注意:我不需要电源外壳或任何外部程序
更新
我提出了java -version 2>&1 | findstr /i "version"
,它给了我以下输出
java version "1.6.0_22"
现在即使是模式匹配或正则表达式的java方式也适用于我:)
答案 0 :(得分:4)
您可以在一行中运行Pangea链接问题的解决方案:
c:\>for /f "tokens=3" %g in ('java -version 2^>^&1 ^| findstr /i "version"') do @echo %g "1.6.0_24" c:\>for /f "tokens=3" %g in ('java -version 2^>^&1 ^| findstr /i "version"') do ( @set v=%g & @echo %v:~1,8% ) 1.6.0_24
我刚检查过,似乎我的第二个例子只适用于Windows7,以下适用于Windows XP(因此它也适用于Windows7)
for /f "tokens=3" %g in ('java -version 2^>^&1 ^| findstr /i "version"') do ( @echo %~g )
答案 1 :(得分:3)
您可以从命令提示符的单行执行此操作 C:> java -version
答案 2 :(得分:2)
您可以尝试:
java -version 2>&1 | awk '/version/ {print $3}' | egrep -o '[^\"]*'
答案 3 :(得分:1)
for /f tokens^=2-5^ delims^=.-_^" %j in ('java -fullversion 2^>^&1') do @set "jver=%j%k%l%m"
这会将java版本存储到 jver
变量中并作为整数存储
你可以用它进行比较.E.G
if %jver% LSS 16000 echo not supported version
。您可以通过删除%k和%l以及%m来使用更多主要版本。此命令提示符版本。
对于.bat,请使用:
@echo off
PATH %PATH%;%JAVA_HOME%\bin\
for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m"
根据我的测试,这是从bat获取java版本的最快方法(因为它只使用内部命令而不是外部命令FIND
,FINDSTR
并且不使用{{1}这也可以减慢脚本)。有些JDK供应商不支持GOTO
交换机,或者它们的实现与Oracle提供的实现不同(更好的避免它们)。
答案 4 :(得分:0)
我编写了以下函数来获取java版本1.6.0_26
String regexMatch(String myInput, String myRegex)
{
String ResultString
Pattern regex
Matcher regexMatcher
regex = Pattern.compile(myRegex, Pattern.DOTALL);
regexMatcher = regex.matcher(myInput);
List<String> matchList = new ArrayList<String>();
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}
for(int i=0;i<matchList.size();i++)
{
myInput=myInput.replaceAll( matchList[i], '')
}
return myInput;
}
并致电
rs=regexMatch(rs,"[a-zA-Z\"]+")
其中rs="java version \"1.6.0_26\""
答案 5 :(得分:0)
基于@a_horse_with_no_name但首先检测命令是否存在。
where java > nul
if %ERRORLEVEL% neq 0 (
set java_v="Command not found"
) else (
for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do set java_v=%%g
)
echo Java: %java_v:~1,8%