Windows C盘清理全攻略:系统工具+命令行+开发者缓存实战

发布时间:2026/9/8 5:48:10
Windows C盘清理全攻略:系统工具+命令行+开发者缓存实战 满C盘这个问题在 Windows 10 和 Windows 11 上几乎每隔一段时间就会出现一次。普通用户的 C 盘里会积累浏览器缓存、下载文件、回收站内容和系统更新遗留文件而开发者的 C 盘还会多出 Node.js 缓存、npm 日志、pip 缓存、Docker 镜像、WSL 虚拟磁盘等一大堆东西。这篇教程的核心目标是帮助你用系统自带功能和少量命令行完成清理不推荐安装来路不明的“C盘清理软件”。标题里说 1 分钟并不是指所有操作全部结束而是指最快的那条清理路径可以在 1 分钟内启动先释放出最容易回收的空间。这篇内容会按“先判断空间去向再做快速清理再深入命令行再处理开发者电脑的常见问题最后给出排错链路和预防清单”的顺序展开。文章末尾还会专门解决一个很常见的开发机报错在 PowerShell 中执行 npm 命令时提示“无法加载文件 npm.ps1因为在此系统上禁止运行脚本”。这个报错本身不占空间但它往往和开发机环境混乱同时出现顺手处理掉会对后续维护有很大帮助。1. 先搞清楚C盘空间都去哪了再决定清理方向不少人在 C 盘变红后第一反应是手动删除桌面上的文件、清空回收站或者随便找一款“垃圾清理软件”一键清除。这样做的结果通常是空间释放不明显或者一些被误删的恢复文件、系统更新文件再也找不回来。在动手清理之前先理解 C 盘上哪些文件可以删除哪些不能删除比掌握一堆清理命令更重要。1.1 “C盘垃圾”不等于全部垃圾先区分哪些能删“垃圾”这个词很模糊。系统临时文件、浏览器缓存、缩略图缓存、回收站里的文件这些属于可以清除的内容微信和 QQ 的聊天文件、软件开发产生的日志、旧版本系统更新备份这些属于“占用很大但需要谨慎判断”的内容hiberfil.sys、pagefile.sys、System Volume Information这些属于“可以调整但不要直接删除”的内容。一个比较容易理解的标准是系统或软件自动重新生成的缓存文件删除后不影响数据安全。用户自己产生的文件例如文档、图片、虚拟机镜像、聊天记录删除前必须确认是否还有价值。系统底层文件例如休眠文件、页面文件、卷影副本不能靠“右键删除”解决要通过系统设置或命令调整。WinSxS文件夹里的 Windows 组件存储不能直接手工删除要用 DISM 命令清理旧版本组件。1.2 清理前先量化一秒钟看出C盘剩多少在 Windows 10 和 Windows 11 中你可以直接在“设置 - 系统 - 存储”看到 C 盘的占用概况。如果更习惯命令行可以用 PowerShell 查看精确的剩余空间和已用空间。打开开始菜单搜索 PowerShell选中后按“以管理员身份运行”然后执行Get-PSDrive C | Select-Object Used, Free这个命令输出的Used和Free以字节为单位数字比较大。为了方便阅读可以换成下面的写法Get-Volume -DriveLetter C | Format-List DriveLetter, FileSystemLabel, {nSizeGB;e{[math]::Round($_.Size/1GB,2)}}, {nFreeGB;e{[math]::Round($_.SizeRemaining/1GB,2)}}执行结果大致如下DriveLetter : C FileSystemLabel : Windows SizeGB : 237.62 FreeGB : 15.31记录下清理前的剩余空间。后续每完成一步清理再执行一次这个命令就能确认到底释放了多少空间。这样比“凭感觉觉得干净了”要靠谱得多。需要提醒的是下面的清理操作主要针对 Windows 10 和 Windows 11 的普通个人电脑。如果是生产服务器或公司统一管控的电脑不能直接套用个人电脑的清理脚本必须先走变更审批和数据备份流程。2. 用系统自带功能快速清理C盘1分钟先救急很多人寻找第三方清理软件的真正原因是不知道 Windows 自带清理工具在哪里。其实 Windows 10 和 Windows 11 已经内置了两套非常实用的清理机制一套是“存储感知”另一套是老的“磁盘清理工具”。这两套工具都能处理 C 盘里最容易堆积的临时文件、更新缓存和回收站内容。2.1 存储感知和临时文件清理最低风险的一分钟操作首先说的是 Windows 10 1703 之后加入的“存储感知”。打开方式有两种按Win I打开设置进入“系统 - 存储”。按Win R输入ms-settings:storagesense按回车。在这个页面里通常会显示“临时文件”“系统与保留”“应用和游戏”“桌面”“文档”等几个分类。点击“临时文件”Windows 会先扫描然后列出可以清理的项目常见项目包括Windows 更新清理回收站下载文件夹中的文件传递优化文件缩略图临时文件以前的 Windows 安装文件注这一步扫描可能需要几秒钟到几十秒钟扫描速度和机械硬盘速度、文件数量有关系。勾选想清理的项目后点击“删除文件”。如果只想快速清理并释放一部分空间优先勾选以下几项可勾选项目大概占用清理后影响Windows 更新清理几百 MB 到几个 GBWindows Update 会重新下载缺失更新但已安装的更新不会丢失传递优化文件几百 MBWindows 更新缓存会被清掉后续更新可能重新下载回收站视回收站内容而定回收站中的文件会被永久删除临时文件几十 MB 到几 GB应用运行时产生的临时文件会被删除一般不影响数据缩略图几十 MB 到几百 MB文件夹缩略图会被重新生成不会造成文件丢失如果只是想先救急这一分钟内不需要做更多操作。清理完成后再次查看 C 盘剩余空间通常能释放出几个 GB。尤其是那些长期没做过 Windows 更新清理的机器光是“Windows 更新清理”一项就可能释放出好几个 GB。2.2 磁盘清理工具老旧Windows更新文件的主要去处“存储感知”覆盖了大部分常见清理项但有一部分老旧 Windows 更新备份文件在存储感知里不一定显示完整。这时可以启动传统的磁盘清理工具按Win R输入cleanmgr按回车选择 C 盘点击“确定”。清理工具会先扫描然后弹出勾选列表。此时不要急着点确定先点击“清理系统文件”。点击“清理系统文件”之后Windows 会重新扫描一次并列出更多可清理内容。这里比较重要的选项是“Windows 更新清理”它对应的是C:\Windows\SoftwareDistribution\Download里的旧更新下载文件以及 Windows 组件存储WinSxS中的旧版本组件备份。勾选这一项后再点“确定”会弹出确认对话框点击“删除文件”即可。这一项的特点是比较慢。如果系统里积压的更新文件很多过程可能持续几分钟甚至更久。不要因为这个耗时就把窗口直接关闭否则清理过程会被中断但又不会损坏系统只是下次还会继续积累。2.3 一分钟内快速看一下清理效果清理结束后回到 PowerShell重新执行下面的命令Get-Volume -DriveLetter C | Format-List DriveLetter, FileSystemLabel, {nSizeGB;e{[math]::Round($_.Size/1GB,2)}}, {nFreeGB;e{[math]::Round($_.SizeRemaining/1GB,2)}}把第 1.2 节记录的数字和现在的数字做对比。如果已经释放出几个 GB快速清理这一步就算完成了。如果剩余空间依然不够或者 C 盘依然是红色再看后面的命令行和深层清理内容。3. 命令行和脚本深入清理适合自己动手的方式图形界面适合快速操作但有一个缺点每次都要手动点击选项无法重复使用。如果你想把这套清理流程固化下来或者需要对多台电脑执行相同操作建议掌握cleanmgr的命令行参数以及 PowerShell 临时文件清理脚本。3.1 用命令直接运行磁盘清理认识 sageset 和 sageruncleanmgr有两个关键参数/sageset和/sagerun。sageset用于配置预设编号下的清理选项它会弹出图形界面但最终会把你的勾选结果保存到注册表指定位置。sagerun用于直接运行某个编号对应的清理配置。常见用法是cleanmgr /sageset:100执行后会弹出磁盘清理窗口这时把想清理的项目勾选上然后点击确定。Windows 会把编号为 100 的这一套清理配置保存下来。以后想直接执行同一套清理就不用再进图形界面了cleanmgr /sagerun:100这里有个关键点100只是示例编号你可以换成任何十进制数字比如 666。只要/sageset和/sagerun使用同一个编号即可。这样做的价值在于自动化。你可以把cleanmgr /sagerun:100写进批处理脚本再配合计划任务定期执行。如果你在自动化脚本里使用cleanmgr /sagerun:100要注意它可能仍然会弹出一个短暂的窗口。在计划任务中执行时建议给任务选择“无论用户是否登录都要运行”并配置“使用最高权限运行”。3.2 清理临时文件写一个 PowerShell 自清理脚本系统临时文件主要存在于两个位置当前用户临时目录%TEMP%系统临时目录C:\Windows\Temp可以直接按Win R输入%temp%打开临时文件夹手动删除但很多文件正在被进程占用会弹出“操作无法完成”的提示。更推荐用 PowerShell 脚本忽略占用文件能删多少删多少# 清理当前用户临时目录和系统临时目录 $tempFolders ($env:TEMP, $env:SystemRoot\Temp) foreach ($folder in $tempFolders) { if (Test-Path $folder) { Get-ChildItem -Path $folder -Force -ErrorAction SilentlyContinue | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue } }这段脚本的关键点是-ErrorAction SilentlyContinue。它的作用是让 PowerShell 在遇到正在被占用或没有权限访问的文件时自动跳过而不会中断整个清理过程。脚本执行完后还可以顺手清空回收站Clear-RecycleBin -DriveLetter C -Force -ErrorAction SilentlyContinue由于清空回收站是不可恢复操作建议先确认回收站里没有重要文件再执行这条命令。3.3 休眠文件和页面文件能省几个 GB但要分清对象在 C 盘根目录下有两个看起来非常占空间的文件hiberfil.sys和pagefile.sys。hiberfil.sys是休眠文件。Windows 启用休眠功能后会把内存内容写入这个文件以便下次快速恢复。它的体积通常和物理内存差不多。如果你睡眠根本不用也不想显示“休眠”按钮可以在管理员命令行中执行powercfg /h off执行后hiberfil.sys会被删除C 盘相应释放出几个 GB。之后如果又想用休眠功能再执行powercfg /h on如果你确实需要休眠但希望休眠文件体积小一点可以启用“快速启动”但关闭完整休眠powercfg /h /type reducedhiberfil.sys /type reduced会让休眠文件变小但也会失去完整休眠恢复能力。pagefile.sys是虚拟内存页面文件不建议普通人直接关闭。页面文件是 Windows 内存换页机制的一部分直接删除或关闭会导致系统在内存压力较大时出现不稳定。如果 C 盘空间确实紧张可以选择把页面文件迁移到 D 盘或其他分区按Win R输入sysdm.cpl回车。切到“高级”选项卡点击“性能”区域里的“设置”。在“高级”选项卡中找到“虚拟内存”点击“更改”。取消勾选“自动管理所有驱动器的分页文件大小”。选中 C 盘设置为“无分页文件”点击“设置”。选中 D 盘设置为“系统管理的大小”或自定义大小点击“设置”。确认后重启电脑。这里要提醒一句迁移页面文件比删除休眠文件风险高得多执行前一定要重启并确认新配置生效不要只把 C 盘页面文件关闭就不管了。否则系统运行一段时间后可能因为虚拟内存不足出现程序崩溃。3.4 控制还原点体积别让系统保护悄悄占满C盘系统还原点存放在System Volume Information文件夹中如果开启了系统保护Windows 会在安装驱动、系统更新或软件前自动创建还原点。还原点历史积累过多时占用空间可以轻松达到几十 GB。在管理员命令行中执行下面的命令可以查看卷影存储使用情况vssadmin list shadowstorage输出中的Used Shadow Copy Storage space表示当前占用的空间Allocated Shadow Copy Storage space表示分配给卷影存储的空间。如果你不需要保留那么多还原点可以进入系统保护设置调整按Win R输入sysdm.cpl回车。切到“系统保护”选项卡。选中 C 盘点击“配置”。调整“最大使用量”的百分比或具体大小。点击“确定”。也可以使用vssadmin命令直接调整卷影存储上限例如vssadmin Resize ShadowStorage /ForC: /OnC: /MaxSize5GB上面的命令表示把 C 盘卷影存储上限调整为 5 GB。注意这个值要根据自己电脑的实际需求设置不要调到 1 GB 之后想找回几个月前的还原点却发现已经全部被覆盖。4. 开发机上最容易被忽略的C盘占用项普通办公电脑的问题在缓存和历史文件开发电脑的问题则全在“开发环境产生的数据”上。Node.js 的 npm 缓存、pnpm 的 store、Docker 镜像、WSL 虚拟磁盘任何一个都可能比系统垃圾占用更多空间。如果不专门处理这些位置即使你前面做了 Windows 更新清理C 盘过几天还是会重新变满。4.1 node_modules、前端构建缓存和本地包管理器前端项目最熟悉的node_modules目录本身就非常大。一个中型项目的node_modules可能有几百 MB大型 monorepo 项目则可能达到几个 GB。但这里要先弄清楚一点node_modules不是“缓存”它是依赖安装后的实际目录删除后需要重新执行npm install才能恢复。不要为了释放空间把正在使用的项目里的node_modules直接删除。真正适合清理的是包管理器自己的缓存目录# npm 缓存清理 npm cache verify npm cache clean --force# pnpm 清理全局 store 中未被引用的包 pnpm store prune# yarn 清理缓存 yarn cache clean如果电脑上使用 pip、Maven、Gradle 比较多也可以用各自自带的清理命令pip cache purgemvn dependency:purge-local-repository这一串命令执行完通常能释放出几个 GB。特别是用于 CI 或频繁创建新项目的电脑包缓存增长速度非常快。想要从根源上防止 C 盘被包缓存占满可以把包管理器的缓存目录迁移到其他分区。以 npm 为例npm config set cache D:\npm-cachepnpm 也可以设置全局 store 目录pnpm config set store-dir D:\pnpm-store注意迁移缓存目录之后原目录里的历史缓存需要手动删除否则已经占用的空间不会自动释放。4.2 解决 PowerShell 脚本被禁npm 报错与执行策略开发者在 Windows 上经常会碰到这样一个问题打开 PowerShell执行npm -v结果报出类似下面的错误npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1因为在此系统上禁止运行脚本。这个报错不在“C盘清理”的范围内但它经常出现在新配置开发环境的机器上。根本原因是 PowerShell 的执行策略默认限制了脚本运行。Windows 为了保证系统安全默认执行策略通常是Restricted这种策略下PowerShell 不允许运行.ps1脚本。npm 安装到 Windows 后提供了一个npm.ps1包装脚本所以就会被拦截。可以用下面的命令查看当前执行策略Get-ExecutionPolicy -List如果希望本地创建的脚本可以运行同时仍然阻止未经签名的远程脚本推荐设置为RemoteSignedSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser这条命令只对当前用户生效不需要管理员权限也比全局修改策略更安全。设置完成后再执行npm -v通常就能正常运行了。如果公司电脑有统一安全策略Set-ExecutionPolicy可能会被组策略限制那就需要联系管理员确认是否允许在开发和测试环境中开放RemoteSigned或Bypass。4.3 Docker、WSL 和虚拟机的镜像存储位置Docker 和 WSL 是开发机上最容易出现“清理完之后 C 盘依然爆炸”的两个因素。Docker 的默认数据目录通常在C:\ProgramData\Docker如果 Docker Desktop 使用 WSL 2 后端数据可能存放在 WSL 的 vhdx 虚拟磁盘中。先看看到底占了多少空间docker system dfdocker system df会显示镜像、容器、本地卷、构建缓存各自的占用情况。如果发现构建缓存非常大可以用docker builder prune -f如果发现有很多悬空镜像可以执行docker image pruneWSL 虚拟磁盘通常可以在 PowerShell 中查看wsl --list --verbose然后查看发行版的安装位置wsl --list --online需要注意不要直接在资源管理器里删 WSL 的 vhdx 文件那会导致整套 WSL 系统无法启动。正确的做法是把发行版导出后迁移或者先用工具压缩 vhdx。迁移步骤相对复杂这里不展开完整命令但建议先确认自己是否真的不再使用某个发行版。如果确认不用再考虑用wsl --unregister删除删除前确认该发行版里的数据都已备份。5. 清理完还是满按这条链路排查C盘空间问题清理完之后发现 C 盘还是红的这种问题很常见。很多人会反复清理同一个位置结果发现每次都只能删除几十 MB。正确的做法不是继续“盲清”而是按一条固定链路排查先看隐藏大文件再看 Windows 组件存储再解决文件占用问题最后才考虑分区调整。5.1 第1步先看“看不见”的文件C 盘根目录下的hiberfil.sys、pagefile.sys、System Volume Information都是默认隐藏的。在资源管理器里如果没开启“显示隐藏文件”你看不到这些大文件自然也就觉得“什么都没了为什么 C 盘还是满”。可以在 PowerShell 里扫描 C 盘根目录下的顶层文件夹估算每个目录占用Get-ChildItem C:\ -Force -Directory | ForEach-Object { $size (Get-ChildItem $_.FullName -Recurse -Force -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum if ($size) { [PSCustomObject]{ Folder $_.FullName SizeGB [math]::Round($size / 1GB, 2) } } } | Sort-Object SizeGB -Descending | Select-Object -First 10这段命令会扫描 C 盘顶层目录的大小并列出占用最大的前 10 个目录。机械硬盘执行这条命令可能比较慢建议只在问题明显时使用。扫描结束后重点看Windows、Users、ProgramData、Program Files这几个目录的占比。5.2 第2步检查 Windows 更新组件存储C:\Windows\WinSxS是最容易让人误会的地方。它的显示大小往往很大但直接删除其中任何文件都可能破坏系统组件。Windows 官方支持的清理方式是使用 DISMDism.exe /Online /Cleanup-Image /StartComponentCleanup如果希望更彻底地清理可以使用Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase加了/ResetBase之后Windows 会把已安装更新的旧版本组件全部标记为可删除这样能释放更多空间但副作用是之后不能再卸载这些更新。如果不确定是否需要回滚系统更新不要轻易加/ResetBase。另一个和 Windows 更新相关的目录是C:\Windows\SoftwareDistribution\Download。这个目录里保存的是更新下载缓存。可以在管理员命令行中先停止 Windows Update 相关服务清理后再次启动net stop wuauserv net stop bits del /f /q %SystemRoot%\SoftwareDistribution\Download\*.* net start bits net start wuauserv如果服务正在被占用停止服务时可能出现提示。这时先关闭“设置 - Windows 更新”界面再重试一次。5.3 第3步解决文件被占用、提示无权限的问题清理临时目录时经常会遇到“文件被使用”或“需要管理员权限”的弹窗。这不是清理方法错了而是部分文件正被当前系统或应用锁定。处理方法按优先级如下关闭正在运行的浏览器、IDE、聊天软件再重新清理。在安全模式下启动系统再清理临时目录。使用任务管理器或资源监视器找出正在占用文件的进程结束对应进程后清理。清理脚本中加入-ErrorAction SilentlyContinue跳过锁定文件不中断整体清理。如果你发现有些文件无论如何都删不掉也不要强行使用各种强制删除工具。文件被占用通常说明当前有进程正在使用强制删除可能造成软件运行异常。5.4 第4步分区扩容前一定先备份当 C 盘里所有可删内容都清理过空间依然不够时很多人会想用 DiskGenius 这类分区工具进行 C 盘扩容。这种思路可行但它属于磁盘结构变更风险比清理缓存高很多。执行前必须清楚一个事实调整分区大小、移动分区位置的过程一旦中断可能导致系统无法启动或数据丢失。安全建议是场景建议C 盘相邻分区没有重要数据可以先把相邻分区的内容备份再删除相邻分区并扩容 C 盘C 盘相邻分区有重要数据不建议直接操作优先考虑把个人数据迁移到其他磁盘笔记本电脑没有额外磁盘优先用移动硬盘备份再调整分区公司统一管理的电脑联系 IT 运维人员不建议自行进行分区变更扩容前至少备份系统和个人数据一次并确认备份可读取没有一个分区工具可以保证 100% 无风险。即便工具本身成熟电源断电、磁盘坏道、操作系统正在使用系统分区文件等因素都可能制造意外。所以在这篇文章里不会给出具体的一键扩容命令因为扩容不是“敲一行命令”就能安全完成的事必须结合磁盘现状和备份条件来判断。6. 让C盘不再变红的长期做法清理只是治标。如果每次都要等 C 盘红了才动手每次都要重复扫描、勾选、删除的流程时间成本其实很高。真正的解决思路是在系统初始化阶段就做好规划然后通过习惯和维护节奏让 C 盘长期保持足够剩余空间。6.1 安装或重装系统时做好分区容量规划很多人装 Windows 时会把整个磁盘直接分给 C 盘128 GB 的 SSD 也敢全部分给系统。表面上看起来空间很大但只要装几个开发工具和游戏C 盘很快就会紧张。原因是很多软件默认安装在C:\Program Files很多缓存默认写在C:\Users系统更新也会占用 C 盘。推荐做法是单独划分 C 盘并给系统盘留出足够余量电脑用途推荐 C 盘容量办公、浏览、文档处理100 GB 到 150 GB开发、设计、虚拟机200 GB 到 300 GB多系统、大量大型软件根据 SSD 总容量灵活调整如果 SSD 总容量只有 128 GB可以考虑直接使用单个分区把个人数据通过“文件夹重定向”方式放到移动硬盘或第二块磁盘上。这里没有“最完美分区”只有适合自己使用习惯的分配方案。原则是C 盘不要装大型媒体资料不要把游戏库和 Docker 镜像默认放在 C 盘。6.2 把个人文件夹和开发缓存统一搬离C盘Windows 10 和 Windows 11 的“设置 - 系统 - 存储 - 高级存储设置 - 保存新内容的位置”可以调整新应用、新文档、新音乐、新图片、新视频的默认保存位置。这一步对刚重装系统的电脑非常有效可以尽早防止个人文件塞满 C 盘。对于开发人员还建议把以下内容统一放到 D 盘浏览器下载目录微信和 QQ 聊天文件目录npm、pnpm、yarn 缓存目录pip 缓存目录Maven 本地仓库Docker Desktop 的数据目录WSL 发行版所在目录Android Studio / IDEA 的缓存目录这些目录具体怎么迁移每个工具都有对应的设置项。迁移后有一个细节容易被忽略旧目录里的历史文件不会自动移动。你需要在修改默认路径之后把旧目录内容剪切到新目录或者删除旧目录中已经确认没有用的缓存。6.3 维护节奏和检查清单当你完成了一次比较彻底的 C 盘清理并且把开发缓存迁移到其他分区后日常维护就不需要天天做了。建议在电脑上建立一个简单的月检流程。一个月做一次的系统级清理清单1. 在设置中打开存储感知查看临时文件。 2. 勾选“ Windows 更新清理”和“临时文件”并执行清理。 3. 打开磁盘清理工具点击“清理系统文件”选择性清理旧更新。 4. 在 PowerShell 中执行 Get-Volume 检查剩余空间。 5. 清空回收站确认回收站中没有需要恢复的文件。开发机还需要额外执行的清单1. npm cache verify / pnpm store prune / yarn cache clean。 2. pip cache purge / mvn dependency:purge-local-repository。 3. docker system df 检查 Docker 数据。 4. docker builder prune -f 清理构建缓存。 5. 检查 WSL 虚拟磁盘所在目录是否已经迁移到 D 盘。 6. 确认微信、QQ 文件目录没有重新落到 C 盘。把这份清单保存成一个文本文件或者写成一个 PowerShell 脚本逐步执行。如果某个步骤报错不要用“忽略”带过先判断错误原因再决定是否跳过。尤其是包管理器和 Docker 相关的清理不建议在生产环境里每天都跑完整清理脚本因为清理缓存后第一次构建可能需要重新下载大量依赖反而拖慢开发速度。最终要记住的判断标准是C 盘清理不是越频繁越好而是在系统稳定、数据安全、释放空间这三者之间找到一个平衡。每次清理之前先备份重要数据再执行操作每次清理之后记录一下释放了多少空间如果发现某个目录一周内又涨回来几 GB那就是有程序在持续写文件应该去检查该程序的日志和缓存配置而不是继续无限期地手动清理。