|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Список обновлений KB |
|
|
CMD/BAT - Список обновлений KB
|
Ветеран Сообщения: 2196 |
Профиль | Отправить PM | Цитировать Нужна помощь в написании скрипта по выводу всех обновлений типа КВ* в разделе и подразделах HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
начал примерно так |
|
Отправлено: 14:08, 10-10-2011 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата sov44:
|
|
Отправлено: 14:15, 10-10-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Цитата gora:
п.с. в посте 1 столкнулся в проблемой отображения обновлений в "чистом" виде, то есть только в виде КВ123456 или КВ1234567 без дополнительных символов в конце. |
|
Отправлено: 14:49, 10-10-2011 | #3 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Вроде сделал. Прошу проверить верность скриптов и подсказать, как их объединить в один
@ECHO OFF SetLocal enabledelayedexpansion SET UNISTALL=HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall FOR /f "tokens=7 delims=\" %%a IN ('reg query "%UNISTALL%"') DO ( set "upd=%%a" if /i "!upd:~0,2!"=="KB" ( set "up1=!upd:~0,9!" if /i "!up1:~-1!"=="-" set "up1=!up1:~0,8!" if /i "!up1:~-1!"=="_" set "up1=!up1:~0,8!" echo !up1! ) ) pause @ECHO OFF SetLocal enabledelayedexpansion 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" ^| 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!" echo !up2! ) ) ) pause |
Отправлено: 00:33, 11-10-2011 | #4 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Слепил всё в один файл. Осталось убрать дублирование некоторых записей.
@ECHO OFF SetLocal enabledelayedexpansion 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!" ::echo !up2! 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!" ::echo !up3! call :fn1 !up3! ) ) ) pause :fn1 set "update=%1" Echo %update% |
|
Последний раз редактировалось sov44, 11-10-2011 в 21:31. Причина: почти решено Отправлено: 17:03, 11-10-2011 | #5 |
Ветеран Сообщения: 1271
|
Профиль | Отправить PM | Цитировать Цитата sov44:
@Echo Off For /F "Tokens=1-4* Delims=-" %%A in ('Dir /B "*.exe"') Do Call :_Func "%%A" "%%B" "%%C" "%%D" "%%E" GoTo :EoF :_Func Set Version=%~3 If /i "!Version:~0,1!"=="v" (Set UpdNameVer=%~2-%~3) Else (Set UpdNameVer=%~2) Reg Query "HKLM\Software\Microsoft\Updates" /s 2>nul|Find /i "%UpdNameVer%" 1>nul 2>&1||^ Reg Query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\HotFix" /s 2>nul|Find /i "%UpdNameVer%" 1>nul 2>&1||^ If /i %5=="" (Echo Start /Wait %~1-%~2-%~3-%~4 /quiet /norestart) Else (Echo Start /Wait %~1-%~2-%~3-%~4-%~5 /quiet /norestart) |
|
Отправлено: 11:37, 12-10-2011 | #6 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать El Sanchez, спасибо за скрипт и за наводку по месторасположению обновлений. Одно осталось не решенным в моём скрипте - убрать повторы выводов обновлений.
|
Отправлено: 17:25, 12-10-2011 | #7 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать После установки обновлений Office 2010, выяснил, что информация об их установке ( не всех, а только некоторых) прописывается только в
В связи с этим попытался объединить свой скрипт и скрипт El Sanchez.
При объединении, в скрипте появилась ошибка. Прошу подсказать, как её исправить. |
Последний раз редактировалось sov44, 12-10-2011 в 23:39. Отправлено: 23:25, 12-10-2011 | #8 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Всё ещё актуально! Как объединить скрипты?
|
Отправлено: 19:55, 17-10-2011 | #9 |
Ветеран Сообщения: 902
|
Профиль | Отправить PM | Цитировать Подскажите в такой ситуации.
@Echo off SetLocal enabledelayedexpansion if exist "%ProgramFiles(x86)%" (set bit=x64) else (set bit=x86) Title Поиск отсутствующих обновлений для Windows %bit% wmic qfe get HotFixID >temp.txt .\iconv\iconv -c -f UTF-16LE -t CP866 temp.txt > ListUpdated.txt del /S /Q temp.txt >nul For /F "Tokens=1-3* Delims=-" %%a in ('Dir /B ".\%bit%\*.msu"') Do Call :matching %%a %%b %%c %%d goto :EOF :matching for /f "Tokens=1 Delims= " %%e in ('FindStr /IB "%2" "ListUpdated.txt"') do set upd=%%e if "%2"=="%upd%" (echo Обновление %2 присутствует в системе.>>%~n0.log) |
------- Отправлено: 15:45, 02-02-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Общее - Список текущих обновлений Windows VISTA | prokazzza | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 123 | 10-01-2011 20:07 | |
Службы - [решено] Не виден список обновлений. | Mura1708 | Microsoft Windows Vista | 2 | 07-01-2010 21:17 | |
Список текущих обновлений Windows XP | Vadikan | Автоматическая установка Windows 2000/XP/2003 | 546 | 09-12-2009 19:09 | |
Полный список обновлений для server2003 | Diesel315 | Microsoft Windows NT/2000/2003 | 11 | 10-02-2009 01:01 | |
Разное - Список доступных обновлений для Windows Vista | SamLab | Microsoft Windows Vista | 8 | 08-09-2008 22:40 |
|