winget支持通配符批量卸载名称匹配的软件,如“microsoft edge*”,需管理员权限、加引号;也可用id列表循环静默卸载;对store应用需指定--source winget避免协议弹窗。

你需要在Windows系统中一次性清除多个名称含特定关键词的软件,比如“Microsoft Edge Beta”“Microsoft Edge Dev”“Microsoft Edge Insider”,又不想逐个查ID再敲命令——winget的通配符卸载功能正好解决这个问题。
用通配符批量卸载名称匹配的软件
该方法适用于卸载一组命名有共同前缀、后缀或中间特征的软件,例如所有含“Preview”“Beta”“Insider”“Test”的包,或某厂商全系工具(如“Microsoft.*”)。
第一步:以管理员身份打开 PowerShell 或 Windows 终端。不加管理员权限会导致部分系统级包无法触发卸载流程。
第二步:运行 winget list 查看当前已安装软件全量列表,快速扫一眼目标软件的命名规律。注意观察是“Microsoft Edge Beta”还是“Microsoft.Edge.Beta”——通配符只匹配 【显示名称(Name)列】,不是ID列。
第三步:构造带引号的通配符命令,例如卸载所有名称以“Microsoft Edge”开头的软件:winget uninstall "Microsoft Edge*"。引号不可省略,否则 shell 会把 * 当作文件通配符展开,导致命令报错或误执行。
第四步:按 Enter 执行。winget 将逐个列出匹配项,并对每一项弹出确认提示:“Do you want to continue? (Y/N)”。输入 Y 确认卸载,N 跳过;直接回车默认为 N,防止误操作。
用 ID 批量卸载多个不同软件
当你已有多个确定无误的软件 ID(比如从 winget list --id 中复制而来),且不想依赖名称匹配的模糊性,就用这个方法——它绕过名称解析,精准、稳定、无歧义。
方法一:逐条执行卸载命令
分别运行:winget uninstall --id=Google.Chrome、winget uninstall --id=Zoom.Zoom、winget uninstall --id=Notion.Notion。每条命令单独回车,失败不影响后续。
方法二:用 PowerShell 循环批量调用
在管理员 PowerShell 中粘贴并执行以下代码:
$ids = "Google.Chrome", "Zoom.Zoom", "Notion.Notion"<br>foreach ($id in $ids) { winget uninstall --id=$id --silent }
加 --silent 参数可跳过交互确认,但【务必确保 $ids 中每个 ID 都准确无误】,输错 ID 不会报错,而是静默跳过——你根本不知道哪条没卸掉。
绕过 Microsoft Store 协议实现静默批量卸载
某些软件(尤其是从 Microsoft Store 安装的 UWP 类应用)在 winget 卸载时会突然弹出 Store 协议窗口,中断批量流程。此时需强制指定源,切断与 Store 的交互链路。
运行:winget uninstall --source winget "Visual Studio*"。这条命令明确告诉 winget:“只从 winget 官方源查元数据,别去找 Store”。
注意:必须先确认 winget 源已启用。若不确定,先执行 winget source list,看到状态为 “Enabled” 的 “winget” 行才算就绪。











