这是一个检测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