使用 wmic 查找产品是否存在

使用 wmic 查找产品是否存在

我想编写一个批处理文件来检查某个程序是否存在,如果存在,我想卸载它。这是我目前得到的结果。

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

虽然不多,但基本上如果它找到“abc123”,我希望它运行卸载程序。这是我目前得到的结果。

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

我不确定如何为激活第二组代码的第一组代码设置“if true”类型的语句。

如果任何结果返回“false”,程序基本上就会跳过卸载。

如果您有任何疑问,请随时提问。谢谢!

答案1

选择任意一项:

了解如何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

相关内容