2

Я хочу написать командный файл, который проверяет, существует ли программа, и если она существует, я бы хотел удалить ее. Это то, что у меня так далеко.

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

Это немного, но в основном, если он находит "abc123", я бы хотел, чтобы он запустил на нем деинсталляцию. Это то, что у меня есть для этого до сих пор.

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

Я не уверен, как установить тип оператора «if true» для первого набора кода, который активирует второй набор кода.

Все, что возвращается как «ложное», программа в основном пропускает удаление.

Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь спрашивать. Спасибо!

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .