我想在我的机器上提取 Java 版本。
1/ 我安装了 Oracle Java 8,命令where java
输出如下:
C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
2/ 命令java -version
输出:
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
3/ 命令java -version 2>&1 | find "version"
输出:
java version "1.8.0_221"
所以我想做与批处理文件中的最后一个命令完全相同的事情。因此,在批处理文件中,我有类似于步骤 2 的代码:
@echo off & setLocal enableExtensions enableDelayedExpansion
set /a count=0
for /f "tokens=*" %%j in ('where java') do (
set /a count+=1
set JAVA[!count!]=%%j
call :echo_java
)
goto :eof
:echo_java
set java_cmd="!JAVA[%count%]!" -version
for /f "tokens=*" %%v in ('%java_cmd% 2^>^&1') do echo %%v
exit /b 0
但是,一旦我将函数修改为:echo_java
相当于第 3 步,如下所示:
:echo_java
set java_cmd="!JAVA[%count%]!" -version
for /f "tokens=*" %%v in ('%java_cmd% 2^>^&1 ^| find "version"') do echo %%v
exit /b 0
我收到此错误:
'C:\Program' is not recognized as an internal or external command, operable program or batch file.
我想这里发生了一些不好的转义,但我真的看不出有什么问题。