Я должен записать сценарий пакетной обработки, чтобы узнать, установлен ли Java, и если это, затем под какой путь? Я чувствую, что это должно быть что-то подобное этому:
for /f %%j in ("java.exe") do (
set JAVA_HOME=..........
)
но я не могу понять это.
P.S. Это должно работать с путем с пробелами два. Как то, если Java установлен в "Программные файлы".
Спасибо.
Не могли бы вы использовать команду 'where'? Например:
>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).
Используя 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.
Последние версии записывают в реестр:
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft
Вы можете посмотреть, какие ключи там находятся, и узнать путь, используя reg.exe