este é um lote para detectar java, mas sempre defina 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)
Como modifico este script para que se o java não estiver instalado no sistema (32 ou 64 bits ou ambos) "echo FAIL" e se estiver instalado (32 ou 64 bits ou ambos) "echo OK"
PD: Se não funcionar corretamente com o acima, também aceitaria respostas com este comando (ou qualquer outro):
wmic product where "name like '%%java%%' AND NOT Name like '%%java auto%%'"
PD: Encontrei um lote que faz exatamente o que eu quero, mas é longo e complicado, e não consegui simplificá-lo. Eu disponibilizo para dar ideias de soluções
Para o caso que você descreve, você deve usar o
where
comando juntamente com a verificação do código de saída (ERRORLEVEL) para ver se o programa existe e está no caminho.Exemplo: