Как проверить установку Java из пакетного скрипта? - PullRequest
5 голосов
/ 01 июня 2010

Мне нужно написать пакетный скрипт, чтобы узнать, установлена ​​ли Java, и если она есть, то по какому пути? Я чувствую, что это должно быть что-то похожее на это:

for /f %%j in ("java.exe") do (
   set JAVA_HOME=..........
)

но я не могу понять.

P.S. Он должен работать с путем с пробелами два. Например, если java установлен в «Program Files».

Спасибо.

Ответы [ 4 ]

7 голосов
/ 02 июня 2010

Используя reg [.exe], вы можете запросить возможных кандидатов в JRE, установленных в системе. Их может не быть или может быть несколько.

В тестовом режиме, работающем внутри командной оболочки:

reg query "HKLM\Software\JavaSoft\Java Runtime Environment"

Я получаю три строки результата, первая из которых CurrentVersion REG_SZ 1.6

Исходя из этого, запрос

reg query "HKLM\Software\JavaSoft\Java Runtime Environment\1.6\"

дает мне JavaHome REG_SZ C:\Program Files\Java\jre6

Это гораздо эффективнее, чем сканирование файловой системы, чтобы найти двоичный файл Java.

Это было проверено при виртуальной установке 32-битной Windows XP.

4 голосов
/ 02 июня 2010

Не могли бы вы использовать команду «где»? Как в:

>where java

И протестировать против этого?

Пример:

C:\Users\myname>where java
C:\Program Files (x86)\Java\jdk1.6.0_17\bin\java.exe

C:\Users\myname>where foo
INFO: Could not find files for the given pattern(s).
1 голос
/ 16 января 2014

Я бы (используя партию)

::get javaw.exe from the latest properly installed jre
for /f tokens^=2^ delims^=^" %%i in ('reg query HKEY_CLASSES_ROOT\jarfile\shell\open\command /ve') do set JAVAW_PATH=%%i

::if reg entry is not found, java is not installed
if "%JAVAW_PATH%"=="" goto YOUR_ERROR

::then strip "\javaw.exe" from the JAVAW_PATH obtained above
set JAVA_HOME=%JAVAW_PATH:\javaw.exe=%

Это должно работать с jre 1.6 и 1.7, установленными в windows xp и seven, и работать намного быстрее, чем поиск в файловой системе.

1 голос
/ 01 июня 2010

Последние версии пишут в реестр:

HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft

Вы можете посмотреть, какие ключи находятся там, и получить путь, используя reg.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...