C盘满了怎么办?用cleanmgr、DISM和PowerShell深度清理Windows系统盘 这次我们来看一个几乎所有 Windows 用户都会遇到的问题C 盘满了。装软件、下缓存、系统更新、休眠文件、临时文件每一样都在悄悄吃掉系统盘空间。与其装各种第三方“管家”软件不如直接记住 Windows 自带的清理命令。cleanmgr加DISM再配合一个 PowerShell 清理脚本基本可以覆盖日常 80% 的可回收空间而且全程不需要额外安装任何程序。这篇文章会讲清楚三件事第一怎么用一条命令完成 C 盘深度清理第二哪些文件能删、哪些文件不能乱动第三清理完后怎么验证空间确实释放了以及遇到常见报错怎么处理。适合系统盘长期告警、不想装全家桶、或者公司电脑不允许安装第三方软件的人。先说明一点命令操作有风险改动系统文件前一定要先做还原点这是本文所有操作的前提。1. 核心能力速览在动手之前先看一下这套清理方案的整体能力。它不是单一工具而是三个 Windows 自带组件组合出来的工作流磁盘清理工具cleanmgr、系统映像部署服务DISM、以及 PowerShell 脚本。能力项说明项目类型Windows 系统自带清理工具 命令行脚本方案解决的核心问题C 盘空间不足、系统更新残留、临时文件堆积核心命令cleanmgr /sageset:1、cleanmgr /sagerun:1、dism /online /cleanup-image /StartComponentCleanup适用系统Windows 10 / Windows 11Windows Server 2016 及以上通用是否需要第三方软件不需要全部使用系统自带组件权限要求必须使用管理员身份运行命令提示符或 PowerShell清理范围临时文件、回收站、Windows 更新缓存、WinSxS 组件残留、缩略图缓存、旧版 Windows 安装文件自动化能力可创建计划任务定时执行静默清理风险等级中低但必须正确选择清理项错误删除可能导致系统更新失败适合人群普通用户、运维人员、系统维护工程师这套方案的最大优势是可控。你在sageset界面里勾选哪些项目真正执行时就只清理哪些项目不会像某些优化软件一样“一键清理”之后还原出一堆问题。2. 适用场景与使用边界这套命令组合适合以下场景C 盘剩余空间低于 10%系统已经出现卡顿或更新失败。Windows 系统更新后WinSxS组件存储越来越大。经常安装和卸载软件C:\Users\用户名\AppData\Local\Temp目录堆积大量残留。公司电脑有安全策略不允许安装第三方清理软件。新电脑到手后想一次性清掉预装系统更新缓存和旧驱动残留。不适合的场景也要说清楚。这套命令不能解决所有问题不能替代软件卸载。需要卸载大型软件时应该走“设置 - 应用 - 卸载”。不能回收用户主动占用的大文件比如微信聊天文件、QQ 接收文件、浏览器默认下载目录。不能处理磁盘坏道和文件系统错误那是chkdsk的职责。不能加速运行内存清理 C 盘空间不会直接提升游戏帧率。不要用它删除Windows.old之外的系统目录内容尤其是C:\Windows\System32、C:\Windows\WinSxS里的文件直接删除会造成系统损坏。安全边界方面重点提醒涉及系统更新缓存、组件存储清理时一定要确保系统更新服务没有正在运行。清理临时文件时如果有程序正在使用某个文件脚本会跳过这是正常现象不是脚本出错。如果这台电脑是公司资产或者多人共用操作前应当确认是否有相应授权和备份策略。3. 环境准备与前置条件这套方案完全依赖 Windows 自带工具不需要安装 Python、Node.js也不需要下载任何第三方包。要做的事情只有四步。首先是确认系统版本。按 WinR 输入winver确认当前系统是 Windows 10 1903 以上版本或者 Windows 11。这两个版本对cleanmgr和DISM的支持最完整。其次是准备管理员权限。右键点击“开始”菜单选择“终端(管理员)”或“Windows PowerShell(管理员)”。注意不是普通的 PowerShell 窗口必须是标题栏带“管理员”字样的窗口。然后是创建系统还原点。在开始菜单搜索“创建还原点”打开“系统属性 - 系统保护”选择 C 盘点击“配置”启用系统保护再点击“创建”。这一步非常关键因为后续 DISM 清理系统组件是不可逆操作有还原点兜底操作时才不会心虚。最后是记录清理前的空间数据。打开管理员 PowerShell执行下面这条命令记下 C 盘当前剩余空间Get-PSDrive C | Select-Object Used,Free,{NameSize(GB);Expression{($_.Used$_.Free)/1GB}}或者使用更直观的Get-VolumeGet-Volume -DriveLetter C | Format-List DriveLetter,FileSystemLabel,Size,SizeRemaining把输出里的SizeRemaining数值记下来清理完成后对比这个数字就知道实际释放了多少空间。4. 核心命令实操cleanmgr 的完整用法很多人用过“磁盘清理”图形界面但不知道它有专门的无界面命令行版本。这套方案的核心就是把图形界面的勾选结果保存下来然后静默执行。4.1 先配置清理项目以管理员身份打开命令提示符或 PowerShell执行cleanmgr /sageset:1参数里的数字1是配置编号可以理解为“给这套配置取个名字”。你可以用1到65535之间的任意数字不同数字对应不同的保存配置互不干扰。执行后系统会弹出“磁盘清理设置”对话框这里面包含比普通磁盘清理更多的项目。建议勾选以下项Windows 更新清理临时文件回收站缩略图传递优化文件DirectX 着色器缓存旧的 Windows 安装文件如果有的话注意普通磁盘清理默认不会显示“Windows 更新清理”但在sageset模式下会列出这是非常关键的一项。Windows 更新后旧的更新包文件可能占据几 GB 到十几 GB 空间勾选这一项能明显释放空间。勾选完成后点击“确定”。此时清理并不会立刻执行刚才的配置会写入注册表供后续命令调用。4.2 静默执行清理配置保存后接下来任何时候都可以通过一条命令执行清理cleanmgr /sagerun:1这条命令会按照 4.1 里勾选的配置无界面运行磁盘清理自动删掉已经勾选的各类文件。这里就是所谓“一条命令清理 C 盘”的完整形态。实际使用中先配置一次之后日常只要跑cleanmgr /sagerun:1即可。补充说明一点cleanmgr /sagerun:1在系统负载较高或磁盘占用严重的情况下可能需要几分钟才能完成。执行过程中不要强制关闭窗口让它慢慢跑。4.3 配置遗失与重新创建如果换了一台电脑或者重装系统后配置不在了不需要重新打开图形界面可以手动重建配置。但更快的办法是直接在管理员终端里再次运行cleanmgr /sageset:1把勾选项目重做一遍。配置文件保存在注册表路径是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches普通用户一般不需要手动改注册表只要知道遇到配置丢失时用sageset重新生成即可。5. DISM 系统映像清理与 WinSxS 瘦身如果说cleanmgr解决的是用户层和系统层临时文件那DISM解决的就是 Windows 组件存储WinSxS膨胀问题。WinSxS 是 Windows 存放系统组件的目录它的体积会随着更新不断变大而且不能直接手动删除文件。5.1 分析组件存储占用先把 WinSxS 的实际占用分析出来。执行dism /online /cleanup-image /AnalyzeComponentStore命令执行后会输出类似这样的信息系统映像中的组件存储大小: 8.21 GB 实际使用: 6.50 GB 可共享: 4.20 GB 备份和已禁用功能: 1.40 GB重点是看“备份和已禁用功能”这一项这一部分是可以被清理回收的空间。如果这个值比较小说明当前系统组件存储没有太多可清理内容。5.2 执行组件清理执行标准清理dism /online /cleanup-image /StartComponentCleanup这个命令会删除被取代的组件版本清理完成后 WinSxS 体积会明显下降。执行时间通常在 10 到 30 分钟之间取决于系统更新历史长度和磁盘性能。执行期间建议不要断电不要强制关机。如果确认这台电脑不需要卸载已安装的系统更新可以进一步执行dism /online /cleanup-image /StartComponentCleanup /ResetBase加/ResetBase参数后会把现有所有更新包固化为系统镜像的一部分删除所有旧版本的组件备份。结果是 WinSxS 进一步变小但代价是之后无法卸载这些更新。生产环境、服务器系统建议慎重使用个人电脑一般问题不大。5.3 哪些情况不要用 DISM需要明确一点DISM 不是万能的。以下情况不要执行组件清理系统正在下载或安装更新时等待更新完成后再执行。电脑上存在大量无法修复的系统文件损坏时优先执行sfc /scannow再考虑组件清理。强制执行/ResetBase后如果系统出现异常无法通过“卸载更新”的方式回退。系统盘剩余空间低于 2GB 时DISM 可能需要临时空间存放中间文件先清理临时文件腾出空间再执行。6. PowerShell 脚本清理临时文件cleanmgr和DISM已经能处理大部分系统级文件但用户目录下的临时文件、更新下载缓存、回收站还属于“漏网之鱼”。这部分用 PowerShell 脚本处理更灵活。6.1 清理临时路径与回收站先看一个比较稳妥的 PowerShell 清理脚本。它只删除三个位置的临时文件$paths ( $env:TEMP, $env:WINDIR\Temp, $env:WINDIR\SoftwareDistribution\Download ) foreach ($path in $paths) { if (Test-Path $path) { Get-ChildItem -Path $path -Force -ErrorAction SilentlyContinue | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue } } Clear-RecycleBin -Force -ErrorAction SilentlyContinue $drive Get-PSDrive C $freeBefore $drive.Free $drive.Refresh() 清理完成请对比清理前记录的可用空间。这个脚本的逻辑很直接遍历三个临时目录把目录下的所有文件和子目录删除最后清空回收站。重点在于-ErrorAction SilentlyContinue遇到正在被占用的文件会自动跳过不会中断整个脚本。C:\Windows\SoftwareDistribution\Download是 Windows 更新下载缓存目录删除后系统会在下次更新时重新下载。如果系统正处于“正在下载更新”状态不建议执行其他时间删除是安全的。6.2 先扫描再删除如果你不想直接删可以先扫描出临时目录总共占了多少空间再决定是否清理。执行下面的命令$target $env:TEMP $size (Get-ChildItem -Path $target -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum 临时目录大小: {0:N2} MB -f ($size / 1MB)这个命令只是计算大小不会删除任何文件。看到结果后再决定要不要执行 6.1 的清理脚本能避免误删你正在使用的一些缓存。6.3 保存为可复用脚本把 6.1 的脚本保存为clean-cache.ps1放到固定目录例如C:\Scripts\。之后每次执行只需要一行命令powershell -ExecutionPolicy Bypass -File C:\Scripts\clean-cache.ps1注意PowerShell 默认执行策略可能禁止直接运行脚本文件。你可以选择在终端里右键以管理员身份执行或者使用上面的Bypass参数。也可以先执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser这样当前用户就能运行本地脚本。7. 自动化创建定时清理任务前面做的工作还停留在“手动跑命令”阶段。如果你想让清理更加省心可以创建 Windows 计划任务让系统每周自动执行一次cleanmgr /sagerun:1和临时文件清理脚本。7.1 创建计划任务以管理员身份打开命令提示符执行schtasks /Create /TN C盘自动清理 /TR cleanmgr /sagerun:1 /SC WEEKLY /D SUN /ST 03:00 /F这条命令的含义是创建名为“C盘自动清理”的计划任务每周日早上 3 点执行一次cleanmgr /sagerun:1。注意任务计划程序里的命令可能不会弹窗而是静默执行正好适合定期维护。7.2 添加 PowerShell 清理脚本如果还需执行 6.1 的清理脚本可以在计划任务的“操作”里增加一条 PowerShell 启动命令。用命令行的方式创建会比较复杂建议直接在“任务计划程序”图形界面里操作。步骤如下打开“任务计划程序”。找到刚才创建的“C盘自动清理”任务。右键 - 属性 - 操作 - 新建。程序powershell.exe参数-ExecutionPolicy Bypass -File C:\Scripts\clean-cache.ps1勾选“使用最高权限运行”。7.3 自动化时的注意事项计划任务以系统权限运行清理时不会弹出任何确认窗口。因此在配置第一次执行前最好先手动跑一遍完整流程确认所有命令都能正常完成。批量执行时建议再加一个日志输出方便排查问题。例如powershell -ExecutionPolicy Bypass -File C:\Scripts\clean-cache.ps1 * C:\Scripts\clean-log.txt把日志重定向到固定文件定时任务跑完后可以查看日志确认清理是否成功。8. 效果验证与常见问题排查清理完成后不能只看命令输出没报错就结束。一定要回到第 3 章的命令重新对比磁盘空间。正常情况是清理后可用空间比清理前增加 1GB 到 10GB 以上具体取决于临时文件和更新残留的多少。8.1 清理后的验证流程依次执行下面这几步确认系统处于正常状态Get-Volume -DriveLetter C dism /online /cleanup-image /AnalyzeComponentStore sfc /scannow第一句查看剩余空间第二句确认 WinSxS 体积是否下降第三句验证系统文件完整性。如果sfc /scannow显示“未发现完整性冲突”说明清理没有破坏系统组件。8.2 常见问题与排查方法下面是清理过程中最容易遇到的几个问题以及对应的排查思路。问题现象可能原因排查方式解决方案cleanmgr /sagerun:1无反应未使用管理员权限检查窗口标题是否带“管理员”右键以管理员身份重新打开终端清理后空间几乎没有变化大文件并不在清理项目范围内用空间分析工具统计大文件目录检查用户下载目录、微信文件目录Windows 更新清理不显示当前系统没有需要清理的旧更新包运行DISM /AnalyzeComponentStore更新几次后再试DISM 报错 0x800f081f系统组件存储异常或空间不足查看 CBS 日志C:\Windows\Logs\CBS先清理临时文件再重试 DISM大量临时文件被跳过文件正在被程序占用无脚本输出SilentlyContinue重启电脑后再清理删除 Windows 更新缓存后更新失败系统正在下载更新时被强制删除重启 Windows Update 服务运行net start wuauserv或等待下次更新清理后系统启动明显变慢不是清理导致可能是磁盘健康问题查看事件日志用chkdsk检查磁盘必要时整理驱动8.3 如果误删了重要文件怎么办如果清理后发现某些软件异常先不要慌张。如果是刚清理完优先尝试系统还原点还原。还原点可用时通过“控制面板 - 恢复 - 打开系统还原”选择清理前创建的还原点按向导完成还原。还原过程可能需要重启期间不要断电。如果系统还原点不存在只能重新安装受影响的软件。这也是为什么第 3 章反复强调要创建还原点清理系统文件永远要把后路留好。9. 性能观察清理前后对比什么很多人以为只要空间变了性能就会立即提升。实际上C 盘清理对性能的影响是分场景的。作为技术博客这里把观察点说清楚。清理 C 盘后最明显的改善是系统更新不再提示空间不足更新成功率提高。开机进入桌面后的短暂卡顿减少尤其是机械硬盘用户。浏览器、微信等软件在读写缓存时响应更流畅。磁盘占用率不再长时间处于 100%用任务管理器观察时更明显。需要观察的数据主要有三个维度。第一是可用空间绝对值前面已经提过。第二是磁盘占用率清理完成后打开任务管理器 - 性能 - 磁盘观察空闲时的占用率是否稳定下降。第三是系统更新成功率清理后重新检查更新看是否能顺利完成扫描和下载。这里有一个很容易被忽略的点固态硬盘剩余空间低于 10% 后写入性能会明显衰减控制器需要频繁搬运闪存块。保持 C 盘剩余空间在 15% 以上比清理出“绝对大数字”更重要。因此如果只为了性能考虑清理到 20% 左右余量就可以停止不必追求把 C 盘清得干干净净。10. 最佳实践与使用建议最后整理一套可以直接照搬的维护节奏这也是我日常给身边同事建议的方案。第一先清理再分析。第一次清理时按第 3 章创建还原点执行 4.1 的sageset配置然后跑sagerun再用 DISM 执行组件清理。这两步做完C 盘一般能释放出最多空间。之后再用空间分析工具看剩余占用大头才是用户文件的问题。第二控制清理频率。临时文件可以每周清理一次cleanmgr /sagerun:1建议每月一次。DISM 组件清理不建议频繁执行每季度或者系统更新出现明显膨胀时执行一次即可。频繁执行/ResetBase会缩短系统组件的版本回溯窗口没有实际收益。第三不要同时运行多个清理工具。第三方优化软件、系统自带磁盘清理、DISM 同时处理相同目录可能产生文件占用冲突反而拖慢清理速度。固定用一套工具链维护习惯容易沉淀。第四合理设置系统保护。很多人为了省空间直接关闭系统保护这不对。系统保护占用的空间可以通过配置上限控制一般给 C 盘 5GB 左右即可。这样既能保留还原点又不会过度占用磁盘。第五遵守使用边界。清理的是临时文件、缓存和系统组件残留不要碰用户文档、项目代码、数据库文件。开发机上尤其注意很多本地开发缓存目录也在AppData\Local下如果正在开发某个大型项目清理前先确认没有正在运行的微服务占用了相关目录。第六如果你维护的是服务器需要把 DISM 组件清理安排进维护窗口执行前同步业务数据并且不要在业务高峰时段运行。服务器的磁盘清理逻辑和普通电脑一样但影响面完全不同风险意识要提高一个等级。11. 总结与下一步这套方案最值得记住的就是两个命令加一个脚本cleanmgr /sageset:1配置清理项cleanmgr /sagerun:1静默执行DISM 负责系统组件瘦身PowerShell 脚本处理用户临时文件。整个流程全程离线、不装软件、不扫码、不弹广告适合所有 Windows 10 和 Windows 11 环境。我最常用的组合是每个月手动跑一次cleanmgr /sagerun:1每半年跑一次 DISM 组件清理再配合计划任务每周清一次临时文件。如果系统盘空间依然紧张下一步应该去检查用户目录下的大文件比如微信数据、浏览器下载文件、开发环境缓存和 Docker 镜像这些才是真正的空间消耗大户。你也可以在清理完成后观察一下系统更新流程是否更顺畅这会是一个比较直观的收益反馈。