是否有适用于 Windows 的卸载程序批处理?

Posted

技术标签:

【中文标题】是否有适用于 Windows 的卸载程序批处理?【英文标题】:Is there Uninstall a program batch for windows? 【发布时间】:2012-04-17 05:22:17 【问题描述】:

我有几个程序要从我的计算机上卸载(Windows 7 64 位)。

是否有批处理\脚本可以帮助我做到这一点?还是我需要从控制面板中一一进行?

如果没有 Windows 7,那么 XP 中是否有类似的东西?

谢谢, 多尔。

【问题讨论】:

为什么不为每个程序运行uninstall.exe? 您可以编写一个批处理文件来在您搜索的目录中找到卸载程序。即:您搜索 Java 并运行 Java 文件夹中的 uninstall.exe。 我建议你试试巴厘岛的答案。它看起来更有希望。 【参考方案1】:

据我所知,在 cmd 中并没有真正的 uninstall 命令类型的东西。但是,您可以查询此 reg 键

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

(如果您使用的是 64 位计算机,可能还需要检查 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

找到您要卸载的程序。每个都有一个UninstallString 值,它将告诉您程序卸载程序文件的路径,然后您可以通过调用它的完整路径和文件名来执行该文件。

如果卸载程序恰好是您可以使用的 msi

msiexec /uninstall /x 静默卸载它。我认为这与批处理所能做的差不多。

希望这会有所帮助!

【讨论】:

^这是从命令行执行您所要求的最佳方式。【参考方案2】:

为了补充巴厘岛的答案,请尝试以下代码...

@echo off
for /f "tokens=*" %%a in ('reg query hklm\software\Microsoft\Windows\CurrentVersion\Uninstall\ ^| find /I "%*"') do (
  for /f "tokens=1,2,*" %%b in ('reg query "%%a" /v UninstallString ^| find /I "UninstallString"') do (
    if /i %%b==UninstallString (
      echo %%d
    )
  )
)

仔细测试。然后删除echo 命令。

【讨论】:

【参考方案3】:

我今天早上写的。

@Echo off
Echo This is a batch file uninstallation program. 
Echo Run as administrator WMIC will not work. 
echo.
Echo The command [wmic product get name] will run.
Echo Looking up all installed programs...
echo. 
wmic product get name

 echo 1. First program
 echo 2. Second program
 echo 3. Third program
 echo 4. Fourth program
 echo 5. Fifth program
echo.
@echo Pick a number: 
echo. 
 choice /c:12345 

 if "%errorlevel%"=="1" wmic product where name="First program" call uninstall
 if "%errorlevel%"=="2" wmic product where name="Second program" call uninstall
 if "%errorlevel%"=="3" wmic product where name="Third program" call uninstall
 if "%errorlevel%"=="4" wmic product where name="Fourth program" call uninstall
 if "%errorlevel%"=="5" wmic product where name="Fifth program" call uninstall

Echo.
Echo.

@echo First method is done. I'll go into the alternate method. 

pause
Echo Get user input - program name?
Echo.
Echo This is an alternate method 
:input
set INPUT=
set /P INPUT=Uninstall which program?: %=%
if "%INPUT%"=="" goto input
echo Your input was: %INPUT%

echo.
echo.
Echo Uninstalling... 

echo The command [wmic product where name="%INPUT%" call uninstall] will run. 


wmic product where name="%INPUT%" call uninstall

@echo If there is "no instance" errors, then the program %INPUT% was uninstalled.

pause

【讨论】:

虽然我更喜欢wmic 解决方案,但对我来说,大多数安装的应用程序似乎不在wmic product get name 列表中。但是,它们列在注册表中的 Uninstall 键中。我想在我的情况下,我需要寻求其他建议的解决方案,您必须自己解析注册表。 wmic 线真的是我所需要的。添加 /nointeractive 以跳过此过程中提出的所有问题。【参考方案4】:

直接从终端使用 wmic。您可以查看 microsoft 的文档以了解更多用法。

这将是一个很好的起点:

wmic product where vendor="Autodesk" call uninstall

我使用上面的代码来清理卸载 Autodesk 产品。

【讨论】:

如果语法正确,您还可以对此类查询使用通配符,这可能会很有趣:wmic product where "name like '%SQL Server%'" call uninstall 将对名称包含字符串“SQL Server”的所有产品执行此操作。首先使用 wmic product where "name like '%SQL Server%'" list brief 之类的东西检查受影响的内容可能是个好主意【参考方案5】:

如果您不需要它是(命令行)批处理,那么 BCUninstaller 非常适合在 Windows 中一次删除和清理许多 sotfwater:https://sourceforge.net/projects/bulk-crap-uninstaller/

【讨论】:

以上是关于是否有适用于 Windows 的卸载程序批处理?的主要内容,如果未能解决你的问题,请参考以下文章

windows下 Oracle11完全卸载方法

mathtype没卸干净,再装装不上怎么办

是否有任何适用于 Windows 的 unshar 实用程序?

你好,大触们,我的 CDR X8被检测到盗版,我打算卸了重装,要清理注册表清理不了。要怎么办?

适用于 Windows 的 Python 中的 Ogg Vorbis 包装器

是否有任何适用于 WINDOWS 的 iPAD 模拟器以便使用我们的 ipa 文件进行测试?