Получение последней родительской папки Java Runtime Enviroment

Я хочу сделать свою работу немного проще, я попытался создать командный файл, чтобы получить путь JRE. Я только получаю путь javaw.exe. Так, например, мы используем Team Center 10. У него есть этот tem_init, и он захватывает папку JRE7 (примерная версия), но люди обновляются до последней версии и удаляют. Я ищу сделать командный файл, который автоматически захватывает установленную JRE.

    @echo off 
    setlocal enableextensions disabledelayedexpansion

    rem Where to find java information in registry
    set "javaKey=HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"

    rem Get java home for current java version
    set "javaDir="
    for /f "tokens=2,*" %%d in ('reg query "%javaKey%\%javaVersion%" /v "JavaHome" 2^>nul') do set "javaDir=%%e"

    if not defined javaDir (
        echo Java directory not found
    ) else (
        set TC_JRE_HOME : %javaDir%
    )

:end 
   endlocal

Я хочу получить такой путь C:\Program Files\Java\jre7

1 ответ

Решение

Вы можете попробовать это (предполагается, что последняя версия будет последним возвращенным результатом):

@Echo Off
Set "baseKey=HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"
Set "regVal=JavaHome"
Set "javaDir="
For /F "Tokens=2*" %%A In (
    '"Reg Query "%baseKey%" /S /F "%regVal%" /V 2>Nul|Find /I "%regVal%""'
) Do Set "javaDir=%%~B"
If Not Defined javaDir (Echo Java directory not found) Else (
    Set "TC_JRE_HOME=%javaDir%")
Pause

редактировать

Это кажется Set переменная излишне, это не:

@Echo Off
Set "baseKey=HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"
Set "regVal=JavaHome"
Set "TC_JRE_HOME="
For /F "Tokens=2*" %%A In (
    '"Reg Query "%baseKey%" /S /F "%regVal%" /V 2>Nul|Find /I "%regVal%""'
) Do Set "TC_JRE_HOME=%%~B"
If Not Defined TC_JRE_HOME Echo Java directory not found
Pause

Я добавил Pause Команды просто для чтения любого Echo эс.

Другие вопросы по тегам