C盘爆满自救指南:Windows磁盘清理与DISM命令实战

发布时间:2026/9/14 15:41:18
C盘爆满自救指南:Windows磁盘清理与DISM命令实战
C盘爆满这件事我几乎每个月都要帮人处理一次。不管是新买的笔记本还是用了两年的老台式机弹窗“磁盘空间不足”的那一刻很多人第一反应是装个清理软件结果越清越乱甚至把不该删的东西删了系统直接罢工。这篇文章我就把这些年在Windows上排查C盘空间的经验整理一遍不绕弯子直接告诉你哪些能删、怎么删、用什么命令删以及哪些看着像垃圾但实际上动不得。1. 动手前先搞清楚C盘空间到底被谁吃了1.1 不要凭感觉删先用Windows自带工具做体检很多人一上来就打开C盘看见Windows文件夹和Program Files就慌其实这是效率最低的做法。Windows让系统正常运行的组件、驱动备份、用户数据、临时文件分散在十几个不同的目录里肉眼根本看不出谁大谁小。我的建议是先看两个地方。第一个是“设置 → 系统 → 存储”Windows 10和Windows 11都有这个入口它能按“系统和保留”“应用和功能”“临时文件”“桌面”“文档”分类显示占用情况。第二个更直接Win R 输入cleanmgr打开磁盘清理工具它会以列表形式显示“Windows更新清理”“临时文件”“缩略图”等项目并且会在第一步扫描的时候告诉你每一项能释放多少空间。这一步的目的不是急着删而是给C盘做个“体检”。我见过太多人因为跳过体检直接手动乱删把C:\Windows\System32下面的文件当垃圾清掉最后开机蓝屏哭都来不及。系统文件的识别是有规则的不是看着像临时文件就能删。1.2 用TreeSize或WizTree快速定位“空间黑洞”Windows自带的存储设置其实不够细它不会告诉你某个具体文件是谁生成的、能不能删。这时候可以用第三方磁盘分析工具我用过TreeSize Free和WizTree这两个都是免费工具扫描速度极快能看到每个文件夹每一层的占用大小。WizTree比TreeSize更快原理是直接读取NTFS主文件表MFT几秒钟就能把整个磁盘的布局扫出来。扫完之后按体积排序你会发现C盘空间通常被这几类占走C:\Users\你的用户名\AppData软件缓存、C:\Windows\WinSxS系统组件存储、休眠文件hiberfil.sys、页面文件pagefile.sys还有微信或QQ的文件存储目录。第一次扫的时候别被吓到很多文件夹看起来好几个GB但其中一部分是硬链接或系统保护文件并不一定都能删。工具只是告诉你“谁大”能不能删、怎么删后面几章我会逐个说清楚。2. 系统自带的清理手段能不开第三方软件就别开2.1 cleanmgr是首选磁盘清理和系统文件清理cleanmgr其实有两层能力。第一层是普通清理能清理临时文件、回收站、缩略图、Windows错误报告等第二层是“清理系统文件”需要点击界面左下角的按钮这时工具会重新扫描多出来一个“Windows更新清理”选项这个才是真正释放大空间的入口。Windows更新清理针对的是C:\Windows\SoftwareDistribution\Download里的更新缓存以及更新后留下的旧组件。Windows每次打补丁都会保留旧版本文件目的是让你能卸载更新但这些备份日积月累可能超过10GB。选中“Windows更新清理”后系统会把这些旧组件标记为可移除但注意这个过程比较慢可能持续十几分钟中途千万别强行关闭窗口或断电。还有两个文件要特别提一下hiberfil.sys休眠文件和pagefile.sys虚拟内存。休眠文件默认占物理内存的约75%如果你16GB内存它就是12GB。如果电脑你从来不用“休眠”功能只是偶尔睡眠那可以在管理员命令行里执行powercfg /h off一下能释放十几GB。虚拟内存文件设置多大取决于你的使用场景如果内存充足可以右键“此电脑 → 属性 → 高级系统设置 → 性能设置 → 高级 → 虚拟内存”把C盘的分页文件设为“系统管理的大小”或调整到D盘这个操作需要重启但能腾出好大一块空间。2.2 开启存储感知让它自动清理而不是等变红Windows 10 1803之后的版本都有“存储感知”功能在“设置 → 系统 → 存储”里打开开关系统会定期清理临时文件和回收站过期内容。你可以配置“运行存储感知”的频率以及回收站文件保留天数、下载文件夹保留天数。但我要说实话存储感知的清理能力比较保守它主要是定期清临时文件对大的系统组件没什么办法。所以它适合作为日常维护手段而不是解决“C盘红了”的主力。真正的主力还是上面说的磁盘清理加命令行的组合。我的习惯是先把存储感知打开设置成“可用空间低于阈值时自动清理”这样即便我一个月不管它也不至于直接爆满。3. 命令行清理真正的隐藏技巧都在这里3.1 用DISM组件清理安全处理WinSxSC:\Windows\WinSxS是Windows组件存储目录这里面保存了系统所有内置组件的原始版本、更新版本、被替换的旧版本。很多教程说可以“删除WinSxS文件夹”这是极其危险的误导。这个文件夹是Windows正常运行的基石硬删的话系统大概率直接报废。正确的做法是使用DISM命令行工具清理旧版本组件。管理员打开命令提示符执行Dism.exe /Online /Cleanup-Image /StartComponentCleanup这个命令会把不再被系统使用的旧组件永久删除。配合参数/ResetBase可以进一步压缩组件库把所有已安装更新标记为“不可卸载”腾出更多空间。执行时间取决于系统当前组件数量一般10分钟到半小时不等。还有一条相关命令能查看可清理的组件占用评估先跑一遍Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore它会告诉你WinSxS实际有多少是真正需要保留的、有多少可以清理。用这个方法老笔记本通常能回收3GB到8GB具体看系统的更新历史有多长。3.2 清理Windows.old和更新缓存如果是跨版本升级过系统比如从Windows 10升到Windows 11C盘根目录下通常有一个Windows.old文件夹这是上一个系统的完整备份方便你回退。这个文件夹轻轻松松就有20GB到30GB留着它只为了30天内的“后悔药”。如果你确定新系统用着没问题就可以删掉删的方法有两种第一种图形化操作磁盘清理 → 清理系统文件 → 勾选“以前的Windows安装”。第二种命令行管理员权限执行以下两个命令都行vssadmin delete shadows /all /quiet RD /S /Q C:\Windows.old注意第一条清理的是系统还原点如果你平时依赖系统还原功能建议把/all换成具体的影子副本ID。第二条强制删除Windows.old文件夹要在确认不需要回退之后再用。更新缓存C:\Windows\SoftwareDistribution\Download也可以直接清空里面的文件前提是Windows Update服务处于停止状态在服务管理器里先把wuauserv停掉再删除缓存最后启动服务不然文件会处于锁定状态删不掉。3.3 用户目录里的AppData是隐形大户但别乱删C:\Users\你的用户名\AppData里存放着几乎所有软件的配置和缓存它分为Local、LocalLow、Roaming三个子目录。很多软件运行时会在这里写大量缓存比如浏览器缓存、Electron应用数据、开发工具的临时文件。随便点开一个子文件夹都有几十万个文件删起来也费劲。这里我要给一个具体建议不建议直接整个AppData删除但可以定向清理几个已知的大目录。比如C:\Users\你的用户名\AppData\Local\Temp是用户临时文件目录可以放心清空AppData\Local\Microsoft\Windows\INetCache是浏览器缓存也可以清AppData\Local\Google\Chrome\User Data\Default\Cache是Chrome缓存关掉浏览器后可以删。至于微信的聊天文件和接收文件默认在“文档/WeChat Files”下那是用户数据不是缓存删除前一定要确认最好用微信设置的“文件管理”迁移到D盘而不是手动剪切。4. 开发环境里的隐形占用Docker、WSL和驱动存储4.1 Docker Desktop和WSL2的虚拟磁盘文件如果你是开发者并且装了Docker Desktop或者WSL2C盘会莫名多出几十GB原因在于Docker Desktop默认使用WSL2作为后端而WSL2的发行版虚拟磁盘文件ext4.vhdx存放在C盘的用户目录里。这个文件的特点很烦人你在容器里删除数据宿主机的vhdx文件大小不会自动缩小因为虚拟磁盘没有自动回收空间。我遇到过ext4.vhdx膨胀到40GB的情况里面实际数据可能只有5GB。简单清理方法有两种第一种在WSL发行版里执行sudo fstrim /这个命令会通知虚拟磁盘回收未使用的块然后回到Windows在管理员PowerShell里执行Optimize-VHD -Path vhdx文件路径 -Mode Full注意需要开启Hyper-V管理功能。第二种更省事导出再导入用wsl --shutdown关闭所有WSL实例然后wsl --export 发行版名 backup.tar删除原发行版再wsl --import 发行版名 安装位置 backup.tar。导入的时候可以指定到D盘这样以后WSL的空间全在D盘跟C盘彻底脱钩。Docker Desktop也可以在设置里把“Disk image location”改成D盘目录但改完要重建现有镜像建议早改早省心。4.2 DriverStore/FileRepository驱动备份仓库很多人在扫盘时看到C:\Windows\System32\DriverStore\FileRepository体积巨大就慌了因为不知道是干嘛的以为是病毒或垃圾文件。其实这是Windows的驱动仓库系统保留了大量已经安装过的、曾经连接过的硬件驱动目的是一旦重新插入某个设备不需要联网就能直接装驱动。这个文件夹会随时间和硬件更换不断膨胀比如你曾经插过几个手机、几个打印机、几个U盾对应的驱动备份就永久保留下来了。清理它的方法是使用pnputil命令而不是手动删文件。管理员命令行执行pnputil /enum-drivers会列出所有第三方驱动结合驱动名称判断哪些是当前设备正在用的然后用pnputil /delete-driver oemXXX.inf /uninstall删除不用的驱动。这里要格外提醒删除未知驱动的风险比较高如果某个外接设备你用不上了可以处理但如果电脑是办公用的、有各种外设的需求我建议宁可多占点空间也别冒险全清。我之前清理了一台公司电脑的驱动备份结果用户某天插了一个老款扫描仪系统死活找不到驱动最后还是我又跑回去用备份盘装驱动才解决的。这属于典型“高手翻车”场景一定要谨慎。4.3 开发语言和工具链缓存清理装过Python、Node.js、Java的人C盘总有几个GB的缓存目录。比如Python的pip缓存默认在C:\Users\你的用户名\AppData\Local\pip\cachenpm的缓存默认在C:\Users\你的用户名\AppData\Local\npm-cache。这些缓存是为了加速重复安装但空间紧张的时候完全可以清掉并不会影响已安装的包只是下次安装同一个包需要重新下载。缓存清理也可以用命令pip用pip cache purgenpm用npm cache clean --force比手动删文件夹干净得多。如果你用的是Miniconda或Anaconda环境文件默认也在用户目录下同一个环境可能占3GB到10GB可以把环境目录指定到其他盘具体做法是在.condarc里添加envs_dirs和pkgs_dirs指向D盘的目录。浏览器和桌面软件的日志、索引文件也容易被人忽略尤其是Windows搜索索引会在C:\ProgramData\Microsoft\Search下存一份不小的数据库。如果你几乎不用Windows搜索功能可以在“索引选项”里把C盘排除掉或者让索引只覆盖个别文件夹这个操作对释放空间帮助有限但确实能减少日常读写和碎片化。5. 常见问题与排查技巧实录5.1 temp文件夹到底能不能删除关于“C盘用户目录里的temp文件夹能不能删”这个问题答案是可以删但要注意方法。用户缓存目录%TEMP%里的文件系统随时可能正在读写直接全部框选删除会提示“正在使用”然后就放弃了。更稳妥的方式是重启电脑后立刻打开这个目录按 CtrlA 全选删除遇到提示使用中的就选“跳过”。但有个地方叫C:\Windows\Temp它是系统级临时目录删除同样要留意权限弹窗。我实测的经验是C:\Windows\Temp通常不需要特意清理系统会自动管理真正占大头的还是用户目录下的临时文件尤其是视频剪辑软件、Adobe系列、Office的缓存动辄几十GB。但如果你的Temp文件夹实际体积不到1GB说明清理价值不大别为这个操心。顺带提一个反常识的点很多人看到C:\Windows\System32\drivers\etc这个路径出现在搜索热词里以为能清理这完全是误解。它只是一个放hosts文件的小目录体积连1MB都不到里面是网络解析配置不背C盘爆满这个锅别浪费时间。5.2 用DiskGenius扩容C盘靠不靠谱C盘空间不够除了清理有人想着直接扩容。DiskGenius的“扩容分区”功能确实能用原理是把D盘或相邻分区的一部分空闲空间划分给C盘操作前它会要求重启到WinPE环境执行过程中最怕断电或中途取消。但我更建议先想清楚一个底层问题如果你的C盘是硬盘后段的小分区相邻空间不够扩容反而会把磁盘结构搞得很复杂。我处理过好几个案例用户为了把C盘从120GB扩到200GB折腾了一下午最后虽然成功了但磁盘上多了一堆复杂的分区链后续做系统备份、重装系统都要多绕弯。我的态度是清理比扩容更重要扩容是最后的兜底方案。清理完能解决50%以上的“C盘爆满”问题剩下的情况才考虑扩容。扩容之前第一件事是用DiskGenius备份分区表第二件事是保证笔记本电量充足并接通电源第三件事是不要中途打开其他软件。如果扩容失败导致数据丢失轻则恢复分区表重则整个盘全没真不是闹着玩的。5.3 我踩过的几个坑清理后开不了机怎么办最后分享几个真实翻车案例都是我在实际帮人清理时踩过的。第一个坑删除“系统还原点”后系统出问题没有回退机会。我给一台老电脑清理空间时执行了vssadmin delete shadows /all /quiet把唯一的还原点删了结果隔几天系统更新出问题想回退已经无从下手最后只能重装。所以还原点这东西哪怕只保留一个也比什么都没有强。第二个坑用网上所谓的“深度清理脚本”批量删除System32下的文件。这些脚本看似一条命令全搞定实际上碰到权限不够的会跳过能删的又包含重要依赖。我见过有人执行脚本后网络适配器失灵提示“代码31由于Windows无法加载这个设备所需的驱动程序”其实就是某个关键系统文件被脚本顺手删了。第三个坑把Docker镜像删了但虚拟磁盘没压缩看起来清理了个寂寞。用Docker Desktop界面删除镜像后你以为空间释放了其实只是把vhdx内部的数据标记删除文件本身还是占用那么多。不执行fstrim和Optimize-VHD那部分空间根本回不到硬盘。所以用了Docker的机器记得定期检查ext4.vhdx的实际大小。根据我这个月处理过的三台电脑统计按我上面的顺序来一遍最少的释放了大约6GB空间最多的释放了48GB主要是从休眠文件、WinSxS和Docker虚拟磁盘里抠出来的。实际操作中我不建议一口气把所有命令全部执行完每执行一个操作先重启一次确认系统正常再继续下一步。毕竟C盘清理这件事宁可慢一点也别把系统拆出问题。清理完之后建议顺手把默认的“文档”“下载”“桌面”迁移到D盘这样以后C盘的压力会小很多。