Usando o wmic para localizar se o produto existe

2

Eu estou olhando para escrever um arquivo em lotes que verifica se existe um programa, e se ele existe, eu gostaria de desinstalá-lo. Isso é o que eu tenho até agora.

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

Não é muito, mas basicamente se ele encontrar "abc123" eu gostaria que ele rodasse e executasse uma desinstalação nele. Isso é o que eu tenho para isso até agora.

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

Não sei como definir um tipo de instrução 'if true' para o primeiro conjunto de códigos que ativa o segundo conjunto de códigos.

Qualquer coisa que volte como "falsa", o programa basicamente pula a desinstalação.

Se você tiver alguma dúvida, não hesite em perguntar. Obrigado!

    
por Samuel Pauk 09.06.2016 / 19:52

1 resposta

4

Escolha qualquer:

Leia como FINDSTR definirá 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

Saída para set "_product=abc123" :

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

Saída para set "_product=avg zen" , mas com 'maneira de chamada direta' ignorada:

==> D:\bat\SU87355.bat
'redirection' way
AVG Zen
avg zen exists
'if errorlevel' way
AVG Zen
avg zen exists
    
por 09.06.2016 / 22:11