Если вы хотите программно определить это из пакетного файла, вы можете использовать инструмент reg.exe
, установленный в windows\system32
.
Раздражает этот инструмент то, что он не может вернуть только код выхода, поэтому вы должны подавить его вывод путем перенаправления в никуда. И он также генерирует сообщение об ошибке, когда значение не существует.
@echo off
rem
rem DetectJvmInstalled.cmd
rem
reg.exe query "HKLM\Software\JavaSoft\Java Runtime Environment" /v "CurrentVersion" > nul 2> nul
if errorlevel 1 goto NotInstalled
rem Retrieve installed version number.
rem The reg.exe output parsing found at http://www.robvanderwoude.com/ntregistry.php
set JvmVersion=
for /F "tokens=3* delims= " %%A IN ('reg.exe query "HKLM\Software\JavaSoft\Java Runtime Environment" /v "CurrentVersion"') do set JvmVersion=%%A
rem if "%JvmVersion%" == "" goto NotInstalled
:Installed
echo JVM Version = %JvmVersion%
exit /b 0
:NotInstalled
echo JVM Not installed.
exit /b 1
На что обратить внимание:
- Существует два перенаправления на устройство
nul
, одно для стандартного вывода и одно для стандартной ошибки.
- Обнаружение выполняется отдельно от анализа значения, чтобы не показывать сообщение
ERROR...
, когда значение не существует.
- После опции
delims=
есть пробел (поскольку пробел является разделителем).
- Пакетный файл возвращает уровень ошибки / код завершения, равный нулю в случае успеха (установлен) или 1 при ошибке (не установлен).
Надеюсь, это поможет.