Пакетная установка скрипта

1

я написал простой пакет для установки Java

for /f "tokens=3" %%c in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" /v Java7FamilyVersion') do set java_version=%%c
if %java_version%==1.7.0_55 (goto end) else (goto install)

:end
exit

:install
msiexec.exe /I "%~DP0jre1.7.0_55.msi" /q /norestart /L "%windir%\log\Oracle_SUN_JAVA7_SE_Up55_DE_x86_0253_Install.log"

Я хотел бы проверить, установлена ли версия, которую я хочу установить, если она должна быть пропущена. Когда Java не устанавливается вообще, конечно, раздел реестра отсутствует, и я получаю сообщение об ошибке.

Может кто-нибудь помочь мне с этой проблемой?

Теги:
batch-file
cmd

1 ответ

1
Лучший ответ

Добавлены цитаты для сравнения строк, значение по умолчанию для java_version, ошибка catch и упрощенная инструкция if. Попробуй это.

set "java_version=0"
for /f "tokens=3" %%C in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" /v Java7FamilyVersion 2^>nul') do set "java_version=%%C"
if not "%java_version%"=="1.7.0_55" goto install
exit

:install
msiexec.exe /I "%~DP0jre1.7.0_55.msi" /q /norestart /L "%windir%\log\Oracle_SUN_JAVA7_SE_Up55_DE_x86_0253_Install.log"
  • 0
    Thx, ошибка catch 2> nul и перенаправляет ошибку на nul? Я правильно понял? Когда я передаю команду reg query в cmd, она работает, никакой вывод, когда java не установлен, но при запуске скрипта он говорит, что 2> не может синтаксически обрабатываться.
  • 0
    @KermitChristmas Правильно. 2>nul отправляет поток stderr (2) в поток nul.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню