下面是一个可以提取卸载字符串的批处理脚本,例如
msiexec.exe/x[guid]
来自x86/32位注册表项以及软件名称。输出如下。您可以添加逻辑,例如if语句来过滤和卸载软件(如果您愿意)。
注意:并非所有应用程序都有
EXEX/X
绳子和一些
文件名
字符串包含
EXEX/I
这意味着重新安装。它们将被替换为
EXEX/X
剧本中
去除
^| findstr“msiexec.exe”
如果要列出所有32位应用程序,请从下面的脚本
MsiExec.exe /X{87D50333-E534-493A-8E98-0A49BC28F64B} SQL Server 2012 Database Engine Services
MsiExec.exe /X{C22613C2-C7A4-4761-A906-116ECD4E7477} SQL Server 2012 Database Engine Services
MsiExec.exe /X{8BC3EEC9-090F-4C53-A8DA-1BEC913040F9} Microsoft .NET Framework 4.6.1 Targeting Pack
MsiExec.exe /X{8C5FB518-E78C-F8F0-BFEC-8EAC65F51003} Windows Assessment Services - Client (Client SKU)
MsiExec.exe /X{90160000-008C-0000-0000-0000000FF1CE} Office 16 Click-to-Run Extensibility Component
MsiExec.exe /X{90160000-008C-0409-0000-0000000FF1CE} Office 16 Click-to-Run Localization Component
MsiExec.exe /X{91361B2A-F741-E591-303B-4EF957F3BAF1} Windows Assessment Toolkit (AMD64 Architecture Specific)
@echo off
setlocal ENABLEDELAYEDEXPANSION
set x86GUID=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
for /f "tokens=2*" %%A in (
'reg query "%x86GUID%" /V /F DisplayName /S /E 2^>nul ^| findstr "DisplayName"'
) do (
for /f "delims=" %%P in ('reg query "%x86GUID%" /s /f "%%B" 2^>nul ^| findstr "HKEY_LOCAL_MACHINE"') do (
for /f "tokens=2*" %%X in (
'reg query "%%P" /v "UninstallString" 2^>nul ^|findstr "UninstallString" ^|findstr "MsiExec.exe"'
) do (
set MsiStr=%%Y
set MsiStr=!MsiStr:/I=/X!
echo !MsiStr! %%B
)
)
)