web-dev-qa-db-ja.com

wmicを使用して製品が存在するかどうかを確認する

プログラムが存在するかどうかを確認するバッチファイルを作成しようとしています。存在する場合は、アンインストールしてもらいたいと思います。これは私がこれまでに持っているものです。

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

それほど多くはありませんが、基本的に「abc123」が見つかった場合は、アンインストールを実行して実行したいと思います。これは私がこれまでに持っているものです。

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

2番目のコードセットをアクティブ化する最初のコードセットに「iftrue」タイプのステートメントを設定する方法がわかりません。

'false'として返されるものはすべて、プログラムは基本的にアンインストールをスキップします。

ご不明な点がございましたら、お気軽にお問い合わせください。ありがとう!

2
Samuel Pauk

いずれかを選択してください:

方法を読む FINDSTRERRORLEVEL を設定します

@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"の出力ですが、 'direct call' wayはスキップされます:

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