脚本怎样批量卸载软件

wen 实用脚本 27

高效自动化清理指南(附实战脚本)

目录导读

  1. 为什么需要批量卸载软件 – 企业运维、个人系统优化的核心痛点
  2. 脚本批量卸载的三种主流方法 – CMD/PowerShell/VBS对比
  3. 实战案例:30秒批量卸载10款垃圾软件 – 手把手教学(含代码)
  4. 常见问题FAQ – 卸载残留、权限报错、脚本兼容性解答
  5. 优化与注意事项 – 避免误删系统组件的最佳实践

为什么需要批量卸载软件?

在日常办公或企业IT管理中,常常会遇到以下场景:

脚本怎样批量卸载软件

  • 电脑预装了多款“流氓软件”,手动卸载耗时且容易遗漏注册表残留。
  • 公司统一更新软件版本,需批量卸载旧版程序。
  • 个人新购电脑需要快速清除不用的软件,释放系统空间。

手动卸载的痛点

  • 每个软件需依次点击“设置→应用→卸载”,重复操作20次以上。
  • 部分软件在控制面板中隐藏,或利用“卸载残留”占用硬盘。
  • 企业成百上千台电脑的运维成本极高。

脚本批量卸载的优势

  • 速度加快10倍:一条脚本可同时处理多个程序。
  • 自动清理残留:结合强制删除命令,彻底清除注册表与文件夹。
  • 一键化部署:适合系统管理员远程或本地执行。

脚本批量卸载的三种主流方法

方法1:CMD脚本(适合新手,无需额外工具)

原理:利用wmic命令获取软件列表,配合product get nameproduct where name="XXX" call uninstall完成卸载。

核心代码示例

@echo off
:: 批量卸载指定软件(以"2345"为例)
echo 正在清理2345全家桶...
wmic product where "name like '%%2345%%'" call uninstall /nointeractive
echo 清理完成!请手动检查注册表残留(可选步骤)
pause

方法2:PowerShell脚本(灵活性强,适合高级用户)

优势:支持通配符、正则匹配、错误处理。

代码示例(卸载所有名称含“WPS”的软件):

$software = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -match "WPS" }
foreach ($app in $software) {
    $app.Uninstall() | Out-Null
    Write-Host "已卸载:$($app.Name)"
}
Write-Host "批量卸载完成!" -ForegroundColor Green

方法3:VBS脚本(兼容旧版Windows)

适合场景:Windows 7或低权限环境。

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(42)
For Each item in objFolder.Items
    If InStr(item.Name, "360") > 0 Then
        objShell.NameSpace(42).ParseName(item.Name).InvokeVerb("uninstall")
    End If
Next

选择建议

  • 个人用户用CMD脚本最直接。
  • 企业IT管理员推荐PowerShell(可整合到SCCM或GPO)。
  • 老旧系统用VBS保底。

实战案例:30秒批量卸载10款常见垃圾软件

场景:新电脑预装了“2345浏览器、360安全卫士、驱动精灵、爱奇艺、腾讯视频、WPS Office、Adobe Reader、迅雷、酷狗音乐、百度网盘”共10款软件。

操作步骤

准备工作——获取软件的准确名称

在CMD中输入以下命令列出所有已安装软件:

wmic product get name > C:\software_list.txt

打开文件,确认每个软件的名称(注意大小写和空格,如“Adobe Reader 11.0.0”)。

编写批量卸载脚本(以PowerShell为例)

# 批量卸载列表(直接修改此处名称即可)
$apps = @(
    "2345", 
    "360安全卫士", 
    "驱动精灵", 
    "爱奇艺", 
    "腾讯视频", 
    "WPS Office", 
    "Adobe Reader", 
    "迅雷", 
    "酷狗音乐", 
    "百度网盘"
)
foreach ($appName in $apps) {
    $app = Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "*$appName*" }
    if ($app) {
        $app.Uninstall()
        Write-Host "成功卸载: $appName" -ForegroundColor Green
    } else {
        Write-Host "未找到: $appName" -ForegroundColor Yellow
    }
}
Write-Host "全部卸载操作完成!" -ForegroundColor Cyan

执行脚本

  • 以管理员身份运行Windows PowerShell(管理员)
  • 复制脚本后按回车,等待完成(通常需30秒~2分钟)。

效果对比

  • 手动卸载10款软件约需15分钟(含查找、点击、确认)。
  • 脚本卸载仅需30秒,且不会遗漏注册表残留(但建议后续用脚本清理文件夹)。

常见问题FAQ

Q1:脚本执行后出现“拒绝访问”或“错误码1603”怎么办?

  1. 确认以管理员身份运行脚本(右键→以管理员身份运行)。
  2. 查看日志(PowerShell中用$app.Uninstall() | Out-File log.txt),判断是否因权限不足或文件被占用。
  3. 尝试关闭杀毒软件(部分软件会保护自身卸载程序)。

Q2:如何彻底清理卸载后的残留文件?

:在脚本后追加以下命令(以PowerShell为例):

# 删除常见残留目录(请确认路径存在)
Remove-Item "C:\Program Files\2345*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATA\2345*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "HKLM:\SOFTWARE\2345*" -Recurse -Force -ErrorAction SilentlyContinue

Q3:卸载后电脑变慢或系统组件被删除了怎么办?

  1. 禁止使用通配符卸载系统关键组件(如Microsoft Visual C++、DirectX、.NET Framework)。
  2. 推荐在脚本中添加白名单过滤:
    $exclude = @("Microsoft", "Intel", "NVIDIA", "Realtek")
    $apps = Get-WmiObject Win32_Product | Where-Object { ($_.Name -notmatch $exclude -join "|") -and ($_.Name -match "垃圾软件关键词") }

Q4:脚本能否同时卸载大量软件并显示进度?

:可以,在PowerShell中添加进度条:

$total = $apps.Count
$i = 0
foreach ($app in $apps) {
    $i++
    Write-Progress -Activity "正在卸载" -Status "$($app.Name)" -PercentComplete (($i/$total)*100)
    # 执行卸载命令...
}

Q5:如何保证脚本在不同Windows版本(Win10/11/Server)上兼容?

  • 优先使用WMI(Win32_Product类)或MSImsiexec /x {GUID})。
  • 避免依赖PowerShell 7特性,使用Windows内置的PowerShell 5.1。
  • 在Win10 LTSC或Win11中,部分软件可能需要额外配置执行策略:
    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

优化与注意事项

必须遵守的3条黄金准则

  1. 永远先备份注册表与重要数据
    reg export HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall C:\Backup.reg
  2. 先测试单款软件:避免误删依赖组件,卸载某款VC运行库可能导致其他软件报错。
  3. 使用列表白名单:不要直接使用for /f循环卸载所有“User”软件,否则可能删除Windows Store应用或DX组件。

高级技巧:创建一键修复脚本

如果卸载后系统出现问题,可以用以下脚本恢复默认软件:

DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow

工具推荐(不用写代码的替代方案)

  • IObit Uninstaller Portables:支持批处理,带注册表清理。
  • Geek Uninstaller:免费且能强制卸载顽固软件。

通过脚本批量卸载软件,可以将繁琐的手动操作转化为自动化的30秒任务,无论是个人清理电脑还是企业运维,掌握CMD或PowerShell脚本都能大幅提升效率。先列白名单、后执行脚本、最后清理残留,这是避免系统崩溃的核心公式。

(本文章已去重并优化SEO,如需转载保留来源:本文来自墨鱼部落格)

抱歉,评论功能暂时关闭!