Перейти к содержимому
www.mytechnote.ru
Меню
  • Администрирование
    • Скрипты
  • Оборудование
    • Обзоры
    • Инструкции
  • Прочее
  • Русский
    • English
    • Русский
Меню

BAT скрипты для обновления программ с определением версий

Привет. Сегодня покажу вам 2 bat скрипта, которые могут сильно облегчить жизнь, если вам в домене необходимо обновлять программное обеспечение через GPO. В моих примерах обновляются Java и Chrome, но по аналогии можно переделать для практически любых программ.

Не вижу смысла что то расписывать по этим скриптам, они довольно просты. В комментариях я указал на основные моменты, которые там происходят. Как всегда доступны они в github, если что.

И так, текст скрипта для обновления Java:

@echo off
set installedVersion=180144
setlocal
setlocal enabledelayedexpansion
rem Путь до актуальной версии Java
set jPath=\Java\jre1.8.0_144\bin\java.exe

rem Определяем установленную версию Java
PATH %PATH%;%JAVA_HOME%\bin\
set jver=
for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m"
echo %jver%| findstr /r "[^0-9]" > nul
if errorlevel 1 goto :checkVersion


set javaPath=C:\Program Files%jPath%
set jver=
for /f tokens^=2-5^ delims^=.-_^" %%j in ('"%javaPath%" -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m"
echo %jver%| findstr /r "[^0-9]" > nul
if errorlevel 1 goto :checkVersion


set javaPath=C:\Program Files (x86)%jPath%
set jver=
for /f tokens^=2-5^ delims^=.-_^" %%j in ('"%javaPath%" -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m"
echo %jver%| findstr /r "[^0-9]" > nul
if errorlevel 1 goto :checkVersion


echo %date% %time% - cannot check java version. Installing actual version... on %computername%
goto :JavaInstall

:checkVersion
rem Если версия ниже чем та, которая нам нужна - устанавливаем новую версию
if %jver% LSS %installedVersion% (
echo version is slower. Current version is %jver%.
echo Installing new Java version...
goto :JavaInstall
)

echo JavaVersion is actual. Copying config files...
echo %date% %time% - java version is actual for %username% on %computername%
goto :CopyConfigs



:JavaInstall

msiexec.exe /i "jre-8u144-windows-i586.msi" /qn /norestart


:copyConfigs
set jPath=C:\program files (x86)\java\jre1.8.0_144
rem определяем, куда установлена Java
dir /A /B "C:\program files\java\jre1.8.0_144\bin\" | findstr /R ".">NUL && set jPath=C:\program files\java\jre1.8.0_144
dir /A /B "C:\program files (x86)\java\jre1.8.0_144\bin\" | findstr /R ".">NUL && set jPath=C:\program files (x86)\java\jre1.8.0_144
echo java install path %jPath%
mkdir c:\Windows\Sun\Java\Deployment
mkdir c:\Windows\java

rem копируем конфиги Java
copy "%~dp0cacerts" "%jpath%\lib\security\" /y
copy "%~dp0DeploymentRuleSet.jar" "c:\windows\sun\java\deployment\" /y
copy "%~dp0deployment.properties" "c:\windows\sun\java\deployment\" /y
copy "%~dp0deployment.config" "c:\windows\sun\java\deployment\" /y
copy "%~dp0exception.sites" "c:\windows\sun\java\deployment\" /y
:EXIT
echo exiting script
exit

И для хрома:

@echo off
setlocal
setlocal enabledelayedexpansion
rem Ищем путь до хрома
for /f "usebackq tokens=3*" %%a in (`reg query "HKLM\software\microsoft\Windows\CurrentVersion\App Paths\chrome.exe" /s`) do (
  if defined %%a do (
        if defined %%b do (
            set _chrome_path=%%a %%b\chrome.exe
        )
    )
  )
if not defined _chrome_path (
echo %date% %time% - cannot fined path to chrome on %computername%
goto :INST_Chrome65
)
set _chrome_path=!_chrome_path:\=\\!
rem опеределяем установленную версию хрома
for /F "tokens=2 delims==." %%I IN (
    'wmic datafile where "name='%_chrome_path%'" get version /format:list'
    ) DO SET "version=%%I"
if not defined version (
echo %date% %time% - unable to check Chrome version on %computername%, installing...
goto :INST_Chrome65
)
rem если версия ниже, чем нужна нам, устанавливаем новую версию
if %version% LSS 65 (
echo %date% %time% - current Chrome version is %version% on %computername%
goto :INST_Chrome65
)

if %version% GEQ 65 (
echo chrome version is actual
echo %date% %time% - chrome version is actual for %username% on %computername%
goto :EXIT
)

:INST_Chrome65
echo %date% %time% - chrome is installing for %username% on %computername%

rem проверяем разрядность операционной системы и ставим нужную версию хрома
Set OS=64
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set OS=32 || set OS=64

If %OS%==64 (
    msiexec /i "chrom64(65).msi" /quiet /norestart
    goto :exit
)

 msiexec /i "chrom32(65).msi" /quiet /norestart


:exit
endlocal
exit

Как видите, скрипты очень похожи. Различия между ними только в методе опеределения версии и поиске пути до установленного приложения. В первом случае для Java мы используем встроенный ключ — java —fullversion c хромом же мы используем WMI для определения весии исполняемого файла. В определении пути, мы используем переменные среды для Java и реестр для хрома.

Опубликовано в 09.04.201930.05.2024 от sanglyb

Навигация по записям

← Lenovo A526 – полное восстановление телефона [аккумулятор, экран, прошивка]
Апрельские обновления вышли. Как всегда, не всё гладко →

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Подписывайтесь

Youtube
vk
telegram
github
twitter
rss
  • Форум
  • Об авторе
  • Поддержать автора

Популярные записи

Новые записи

  • Как расширить LVM раздел в Linux
  • Исправление ошибки SrsResources.dll после обновления SSRS для SCCM
  • Проблема при использовании библиотеки PassFiltEx на старых процессорах
  • Как удалить вложения из старых событий календаря в Exchange с помощью скрипта
  • Как скачать и установить Office 2024 LTSC

Архивы

  • 2026 (3)
  • 2025 (5)
  • 2024 (7)
  • 2023 (6)
  • 2022 (5)
  • 2021 (25)
  • 2020 (34)
  • 2019 (39)
  • 2018 (78)
  • 2017 (56)
  • 2016 (77)
  • 2015 (9)
© 2015-2026 www.mytechnote.ru
Использование материалов сайта возможно только с разрешения владельца или обязательна индексируемая, прямая, передающая вес ссылка на материал.