После установки обновлений Office 2010, выяснил, что информация об их установке ( не всех, а только некоторых) прописывается только в
Код:
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
В связи с этим попытался объединить свой скрипт и скрипт
El Sanchez.
читать дальше »
Код:
@Echo Off
SetLocal enabledelayedexpansion
Echo.
Echo Установка обновлений
Echo Если обновления есть в системе, их установка не производится
Echo.
For /F "Tokens=1-4* Delims=-" %%A in ('dir /b /od "*.exe"') Do Call :fn1 "%%A" "%%B" "%%C" "%%D" "%%E"
SET UNISTALL=HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
FOR /f "tokens=7 delims=\" %%a IN ('reg query "%UNISTALL%"') DO (
FOR /f "tokens=1,2*" %%b IN ('reg query "%UNISTALL%\%%a" 2^>nul ^| FIND /I "HelpLink"') DO (
set "tt=%%d"
if /i "!tt:~7,21!"=="support.microsoft.com" (
set "up2=!tt:~-9!"
if /i "!up2:~0,2!"=="d=" set "up2=KB!up2:~2!"
if /i "!up2:~0,1!"=="=" set "up2=KB!up2:~1!"
if /i "!up2:~0,3!"=="id=" set "up2=KB!up2:~3!"
if /i "!up2:~0,3!"=="kb/" set "up2=KB!up2:~3!"
if /i "!up2:~6,2!"=="-v" set "up2=KB!up2:~0,-3!"
if /i "!up2:~0,4!"=="KBKB" set "up2=!up2:~2!"
if /i "!up2:~0,2!"=="b/" set "up2=KB!up2:~2!"
call :fn1 !up2!
)
)
FOR /f "tokens=1,2*" %%b IN ('reg query "%UNISTALL%\%%a" 2^>nul ^| Find "REG_SZ"') DO (
set "zz=%%d"
if /i "!zz:~0,2!"=="KB" (
if /i "!zz:~-2!"=="v2" set "zz=!zz:~0,-2!"
set "up3=!zz!"
call :fn1 !up3!
)
)
)
pause
GoTo :EoF
:fn1
Set Version=%~3
set "n=%~1"
set "update=%1"
If /i "!Version:~0,1!"=="v" (Set UpdNameVer=%~2-%~3) Else (Set UpdNameVer=%~2)
if /i not "KB%UpdNameVer:~2%"=="update=%1" (
If /i %5=="" (
Echo Установка обновления %n% - KB%UpdNameVer:~2%
start /Wait %~1-%~2-%~3-%~4 /quiet /norestart
) Else (
Echo Установка обновления %n% - KB%UpdNameVer:~2%
start /Wait %~1-%~2-%~3-%~4-%~5 /quiet /norestart
)
)
При объединении, в скрипте появилась ошибка. Прошу подсказать, как её исправить.