Пакетный файл, чтобы найти определенный КБ и удалить его, если существует - PullRequest
0 голосов
/ 11 октября 2018

Я пытался заставить пакетный файл работать, но у меня не получилось;Может быть, кто-то может помочь.У меня есть пакетный файл, который читает текстовый документ, который находится в той же папке и называется KB-list.txt, который является списком окон KB, которые должны быть отсканированы, если какой-либо из них присутствует на ПК, я хочу, чтобы он был удален.

Пожалуйста, найдите код, который я создал ниже, поиск отлично работает, когда он находит тот, который не работает, он просто показывает, что он был найден.

@echo off
setlocal enabledelayedexpansion

echo "Hotfix & Updates list."
Echo.
(for /f %%a in ('type c:\KB-list.txt') do (
echo "Searching For KB%%a"
Echo.
systeminfo | findstr KB%%a

))

for /f %%i in ('type C:\KB-list.txt') do (

echo "Uninstalling KB%%i"
wusa /uninstall /kb:%%i /quiet /norestart
)
echo "Uninstall(s) Complete."
echo.
echo "Done"
echo.
echo "Rebooting…"
echo.
shutdown /r

Еще раз спасибо!

1 Ответ

0 голосов
/ 11 октября 2018

Запуск systeminfo несколько раз совершенно неэффективен.

Используйте параметр findstr / g для сравнения всего списка сразу:

:: Q:\Test\2018\10\11\SO_52761793.cmd
@echo off
setlocal enabledelayedexpansion
set "Log=^>^> Logfile.log"
%Log% echo Hotfix and Updates list.
%Log% Echo(
for /f "tokens=2 delims=B" %%i in ('
    systeminfo^|findstr /g:KB-list.txt'
) do (
      echo [%date% %time%] Uninstalling KB%%i"
%Log% echo [%date% %time%] Uninstalling KB%%i"
    wusa /uninstall /kb:%%i /quiet /norestart && (echo [%date% %time%] Done)||(echo [%date% %time%] failed)
)

(   echo [!date! !time!] Uninstall(s^) Complete.
    echo(
    echo Done
    echo(
    echo Rebooting…
    echo(
) %Log%
shutdown /r

РЕДАКТИРОВАТЬ: урезанный вариант без регистрации

:: Q:\Test\2018\10\11\SO_52761793.cmd
@echo off
setlocal enabledelayedexpansion
echo Hotfix and Updates list.
Echo(
for /f "tokens=2 delims=B" %%i in ('
    systeminfo^|findstr /g:KB-list.txt'
) do (
    echo Uninstalling KB%%i"
    wusa /uninstall /kb:%%i /quiet /norestart && (echo Done)||(echo failed)
)
echo Uninstall(s) Complete.
echo(
echo Done
echo(
echo Rebooting…
echo(
shutdown /r
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...