how to get java version in batch and echo something if empty out or not
this is a batch to detect java, but always set 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)
How do I modify this script so that if java is not installed on the system (32 or 64 bits or both) "echo FAIL" and if it is installed (32 or 64 bits or both) "echo OK"
PD: If it doesn't work properly with the above, I would also accept responses with this command (or any other):
wmic product where "name like '%%java%%' AND NOT Name like '%%java auto%%'"
PD: I have found a batch that does just what I want, but it is long and complicated, and I have not been able to simplify it. I make it available to give solution ideas
Solution 1:
For the case you describe, you should use the where
command coupled with checking the exit code (ERRORLEVEL) to see if the program exists and is in the path.
Example:
@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