如何批量获取 Java 版本,并在空或非空时回显某些内容

如何批量获取 Java 版本,并在空或非空时回显某些内容

这是一个检测java的批处理,但总是设置ok

setlocal EnableDelayedExpansion
for /f "tokens=3" %%i in ('java -version 2^>^&1 ^| findstr /i "version"') do (echo %%i)
IF %%i == "" (echo fail) else (echo ok)

我如何修改此脚本,以便如果系统上未安装 Java(32 位或 64 位或两者),则显示“echo FAIL”,如果安装了 Java(32 位或 64 位或两者),则显示“echo OK”

PD:如果上述命令不能正常工作,我也会接受使用此命令(或任何其他命令)的响应:

wmic product where "name like '%%java%%' AND NOT Name like '%%java auto%%'"

PD:我发现一批这正是我想要的,但它又长又复杂,我无法简化它。我把它提供出来是为了提供解决方案

答案1

对于您描述的情况,您应该使用命令where并检查退出代码(ERRORLEVEL)来查看程序是否存在且在路径中。

例子:

    @echo off
    where java 2>NUL
    if "%ERRORLEVEL%"=="0" (call :JavaFound) else (call :NoJava)
    goto :EOF

    ::::::::::::::::::::::::::::::::::::::::::::
    :JavaFound
    ::::::::::::::::::::::::::::::::::::::::::::
    Echo Java found.. checking version...
    goto :EOF

    ::::::::::::::::::::::::::::::::::::::::::::
    :NoJava
    ::::::::::::::::::::::::::::::::::::::::::::
    Echo Java not found, you need to install it.
    :: install java here?
    goto :EOF

相关内容