
CMD プロンプトではすべて正常に動作しますが、実行するには bat ファイルを入力する必要がありますが、Reg Query cmd の出力を取得できず、そこから別のクエリを実行することができません。
私が探しているのは App ID であり、これは変更される可能性があるため、キーの残りの部分を見つける必要があります。コマンド プロンプトで次のように入力すると、必要なものが見つかります。
REG Query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /F "APP_NAME" /E /S
次のような必要なキーが提供されます:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\{398E49A0-84CA-43B5-A926-42EF68619E91}
そこから別のコマンドを実行してアンインストール コマンドを取得できます。
REG Query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\{398E49A0-84CA-43B5-A926-42EF68619E91} /V "UninstallString"
サイトで見たものを使用して試してみましたfor \f token....
が、スキップしても最初の文字列だけが返されません。また、何らかの方法で割り当てることもできませんでした。次のようなものが必要です。
set Full_Key = reg query...
set Uninstall_CMD = Full_Key "/V Uninstallstring"
見つかったら、エントリは 1 つだけになることがわかります。
答え1
たくさんの宿題と古い本を調べた結果、これが動作するようになりました。ネットワーク上で私と同じアプリをアンインストールする必要がある場合や、開始点が必要な場合に備えて、ここにコードを投稿します。
私が解決しなければならなかった主な問題は、典型的なアンインストール ファイルがないため、App ID を見つけて、レジストリからアンインストール文字列を取得することでした。
見た目は最高のコードではないかもしれませんが、機能します。
rem First Check To See If The App Is Even Installed, In My Case, It May Not Be A Dell Box, Or We Already Uninstalled
REG Query %Computer%HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /F "Dell SupportAssist" /E /D /S > NUL
Rem If We have Error, It Is Not There, Bail Out
if errorlevel 1 exit
rem The Key Is Found, So It Must Be Installed, So Get The Full Key, By Searching For The App Name
FOR /F "tokens=*" %%A IN ('REG Query %Computer%HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /F "Dell SupportAssist" /E /D /S 2^>NUL ^| FINDSTR /R /C:"HKEY_"') DO (
rem Now We Have The Full Key From Above, Grab The Uninstall Command And Run It
FOR /F "tokens=2*" %%B IN ('REG Query "%Computer%%%~A" /F UninstallString /V /E ^| FIND /I " UninstallString "') DO %%C% /qn
)