Використання wmic, щоб знайти, чи існує продукт


2

Я хочу написати пакетний файл, який перевіряє, чи існує програма, і чи існує вона, я хотів би її видалити. Це те, що у мене поки що.

 @echo off
 (wmic product get name| findstr /i "abc123")

Це не так багато, але в основному, якщо він знаходить "abc123", я хотів би, щоб він запустив запустити видалення на ньому. Ось що я маю за це поки що.

 wmic product where name="abc123" call uninstall/nointeractive

Я не впевнений, як встановити тип оператора 'if true' для першого набору коду, який активує другий набір коду.

Все, що повертається як "помилкове", програма в основному пропускає видалення.

Якщо у вас є якісь питання, будь ласка, не соромтеся їх задавати. Дякую!

Відповіді:


4

Виберіть будь-який:

Прочитайте, як FINDSTRбуде встановленоERRORLEVEL

@ECHO OFF
SETLOCAL EnableExtensions
set "_product=abc123"
rem set "_product=avg zen"

echo 'redirection' way
(wmic product get name| findstr /i /C:"%_product%")&&(
    echo %_product% exists
    rem uninstall here
  )||(
    echo %_product% no instance
  )

echo 'if errorlevel' way
wmic product get name| findstr /i /C:"%_product%"
if errorlevel 1 (
  echo %_product% no instance
) else (
  echo %_product% exists
  rem uninstall here
)

echo 'direct call' way
wmic product where "name='%_product%'" call uninstall/nointeractive

Вихід для set "_product=abc123":

==> D:\bat\SU\1087355.bat
'redirection' way
abc123 no instance
'if errorlevel' way
abc123 no instance
'direct call' way
No Instance(s) Available.

Вихід для, set "_product=avg zen"але з "прямим викликом" пропущено:

==> D:\bat\SU\1087355.bat
'redirection' way
AVG Zen
avg zen exists
'if errorlevel' way
AVG Zen
avg zen exists

Чи немає прямого способу запитати wmic для всіх продуктів, які він знає, на основі відповідності підрядків? Повний список на комп’ютері, який використовується рік-два, займає досить багато часу, тому, якщо є спосіб уникнути того, щоб він вперше пройшов весь список встановлених програм, це легко перерве очікування на 30 секунд.
Майк 'Помакс' Камерманс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.