2010-09-28 52 views

回答

3

获取版本,并将其写入临时文件。然后只解析版本本身:

@echo off 
echo off 
java -version 2> tmp_java_version.txt 
set /p JAVA_VERSION= < tmp_java_version.txt 
del tmp_java_version.txt 
set JAVA_VERSION=%JAVA_VERSION:~14,3% 

echo %JAVA_VERSION% 
pause > NUL 
+0

不错。如果使用for命令,则可以避免使用临时文件 – 2010-09-28 11:29:46

+0

可能出现java未在路径中设置但已安装的情况。 – 2010-09-28 12:18:43

+0

Afaik,如果安装了Java,则System32目录中还有一个java.exe,这意味着可以从shell中的每个位置调用java。所以不应该有问题。也许var是空的,但你必须检查它。 – 2010-09-28 13:04:14

0
java -version 

您也可以使用命令

java -fullversion 

,并产生输出,例如:

java的完整版本 “1.6.0_17-B04”

在计算机上没有任何版本来自Sun Microsystems的Java安装,这会导致错误消息:

'jav a'不被识别为内部或外部命令,可操作程序或批处理文件。

在批处理你可以这样做:

@echo off 
java.exe -fullversion 2> c:\temp\out.txt 
for /F "tokens=4" %%i IN (c:\temp\out.txt) DO echo %%i 

你无法避免的临时文件,因为java.exe的输出到标准错误写!所以你必须将标准错误重定向到一个文件。

0

如果你可以下载和gawk的Windows。

C:\test>java -version 2>&1 | gawk "NR==1{print $3}" 
"1.6.0_16" 
0

在条命令提示符下,你可以只输入有java -version.

例如:

D:\Users> java -version 

,那么你将得到答案

java version 1.8.0_11 
相关问题