☰
Windows C盘清理实战:临时文件、缓存与安全删除指南
2026/10/6 3:21:09 网站建设 项目流程

Windows 用久了,C 盘的空间就像漏水的桶,怎么都不够用。很多人第一次动手清理,第一个目标就是 temp 目录——没错,%temp% 确实是最容易产生系统缓存垃圾的位置之一,但如果你只盯这一个目录,八成会漏掉大量更新缓存、日志和软件残留;反过来,如果凭着感觉把 AppData 整个删一遍,那又过了界。这篇文章我把 Windows 10/11 上清理缓存垃圾的完整路线整理出来,主要讲三件事:哪些能删、哪些不能碰、以及清完之后怎么确认自己到底释放了多少空间。如果你想安全清理电脑磁盘空间,又不想动个人文档、照片和已安装软件,这套思路基本直接照抄就能用。

1. 临时文件到底藏在哪:先搞懂 %temp% 和系统缓存的家底

1.1 用户级 temp:电脑里最容易被盯上的垃圾大户

先看路径。在 Windows 的资源管理器地址栏输入 %temp% 回车,打开的一般是 C:\Users<你的用户名>\AppData\Local\Temp,也就是当前用户级的临时文件夹。AppData 下面确实有不少不能乱碰的东西,但 Temp 这个子目录比较特殊,它就是一个中转站:软件安装包在这里解压临时文件,安装程序在这里释放更新包,聊天软件在这里做文件预览,崩溃报告也经常往这里甩东西。正常情况下,软件退出时会顺手清理自己创建的临时文件,Windows 本身也有定期清理机制,可一旦遇到断电、蓝屏、强制结束进程,这些收尾工作就不会执行,残留文件越积越多。

这里面最常见的垃圾包括各种 .tmp 文件、.log 日志、旧的 .dll、安装包残片。单个体积可能不到几 MB,但数量一旦上到几十万个,就会明显拖慢目录枚举速度,也会占用不少磁盘空间。有些电脑 temp 目录常年挂着十几个 GB,我见过最夸张的一台办公电脑,光是这个目录就占了大概 20 GB,里面基本是三年没清过的安装包碎片和异常退出产生的临时文件。

清掉这些残留不会影响系统,因为它们本来就是可重建的临时数据。但有一点要留意:不要边运行软件边删,特别是浏览器、Office、设计软件这类程序正开着的时候。它们可能正在往 Temp 里写中间文件,你这边全选删除,那边软件可能就会报错。正确做法是先退出能退的常驻程序,再打开 %temp% 清理。

1.2 系统级临时目录和更新缓存:量级常常比用户 temp 更大

用户 temp 只是第一站,真正的大头往往藏在系统目录里。

C:\Windows\Temp 是系统级临时目录,Windows Update、系统组件安装、部分驱动安装都会在这里作业。这个目录需要管理员权限才能操作,普通用户打开会提示没有权限。清理方式不必绕太多弯,管理员身份打开 PowerShell,把里面的内容删除即可,同样建议先重启再删,能避开大部分占用。

C:\Windows\SoftwareDistribution\Download 是 Windows Update 的下载缓存。很多人一看到“Download”就觉得可以全删,我的建议是谨慎一点。这里是补丁下载后的存放位置,如果更新正好在下载或安装过程中,手动删掉容易把更新状态弄坏。更安全的办法是用磁盘清理工具里的“Windows 更新清理”选项,系统自己知道哪些补丁文件已经不再需要。如果确定当前没有更新任务,也可以先停掉 Windows Update 服务再清理这个目录,但没必要专门去写一个停服务的脚本。

还有 C:\Windows\Prefetch,也就是预读取文件夹,它存的是部分软件启动时要用的索引文件。网上有些文章把它说得神乎其神,动不动就让你删 Prefetch 加快开机。实际它对空间占用非常小,删了对加速启动也没有明显好处,反而让程序重新建立预读数据。我不把它列进每周清理计划。

1.3 容易被漏掉的“隐形缓存”清单

除了上面这些,还有几个位置经常被忽略,我整理成了一张清单:

对象典型路径体积量级清理建议
缩略图缓存%LOCALAPPDATA%\Microsoft\Windows\Explorer几十 MB 到几百 MB磁盘清理勾选“缩略图”
传递优化缓存由 Windows 更新管理,路径在系统内部可能到 GB 级设置里关闭“允许从其他电脑下载”或清理
回收站C:$Recycle.Bin视已删内容而定清空前确认没有误删文件
浏览器缓存%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache 等几百 MB 到几 GB在浏览器内清除
系统日志C:\Windows\Logs视运行时长而定跟随系统 temp 清理

传递优化缓存比较特殊,它不是传统意义上的垃圾,是 Windows 用来在局域网内分发更新文件的缓存。如果家里和公司只有一台电脑,这个缓存基本没有存在意义,可以在设置里把它关掉或清理。但如果公司里有多台电脑都用同一条网络下载同一个更新,这个缓存反而能省流量,我先说明一下,别急着把功能关死。

2. 手动清理的标准路径:磁盘清理、存储感知和命令行实操

2.1 先跑系统自带工具:cleanmgr 和“清理系统文件”

最快的起点不是第三方软件,而是 Windows 自带的磁盘清理。按下 Win+R,输入 cleanmgr 回车,选择系统盘。如果只跑这一层,你会发现可清理的项目很少,很多缓存不会显示出来,所以一定要点“清理系统文件”按钮,它会重新扫描一遍,才会出现“Windows 更新清理”“临时文件”“缩略图”“传递优化缓存”这些条目。

我的建议是第一次清理时把能勾的都勾上,尤其是“Windows 更新清理”和“临时文件”这两项,但“回收站”这类带个人痕迹的项目要单独确认,别一闭眼全清。磁盘清理的好处是它根本不会去动文档、照片、软件安装目录,它只认系统自己登记过的可清理条目,对新手来说最不容易翻车。缺点是它不会把所有临时目录都清干净,尤其不会清掉当前用户还在使用的某些临时文件。

存储感知是 Windows 10/11 的另一个内置选项,在“设置—系统—存储”里。打开后可以让系统定期清理回收站和临时文件。我一般会设置成“回收站文件保留 30 天”“下载文件夹保留 14 天”,这样既不用天天手动清,也留足了后悔时间。不过要提醒一句:如果下载文件夹里放着工作资料,建议把下载文件夹自动清理关掉,或者设置成跳过最近 30 天以内的文件,免得忙完一个项目回头发觉源文件被自动清走了。

2.2 命令行的高效姿势和权限边界

如果你和我一样爱用命令行,可以把 cleanmgr 的参数用起来。第一次运行:

使用管理员 PowerShell 窗口。

先执行cleanmgr /sageset:1,这会弹出一个磁盘清理设置窗口,勾选你想清理的项目,然后点确定。系统会把配置保存到注册表编号 1 以下。

之后想静默执行,就运行cleanmgr /sagerun:1。

这样做的价值是可以把同样的清理配置重复跑很多次,不用每次重新勾选。我在给公司电脑做定期维护时,就靠这一条命令避免了很多重复劳动。注意编号取值范围一般是 1 到 65535,你选一个自己记得住的数字就行。

命令行还有一条有用的原则:系统目录的清理必须以管理员身份执行。普通用户身份下,哪怕你打开了 PowerShell,去删除 C:\Windows\Temp 也会遇到权限拒绝。很多教程不讲这个,导致读者照着敲命令发现报错,然后以为命令写错了。区别只在于是否右键“以管理员身份运行”。

2.3 清空 %temp% 的实际注意点:怎么删、删不掉怎么办

手动清空用户 temp 的操作不用太复杂:Win+R 输入 %temp% 回车,进入之后 Ctrl+A 全选,再按 Shift+Delete 永久删除。删除过程中大概率会弹出“文件正在使用”的提示,这时候点“跳过”就好,不要纠结那剩下的一两个文件。

有几个实操细节值得单独说。

第一,别害怕文件数量多。temp 目录可能堆积几十万个小文件,全选后系统要先花几分钟计算大小,这是正常现象,不要以为卡死了就强行关窗口。我见过有人一看到“正在计算”就等不及,重开资源管理器,结果删除进度中断,下一次清理更慢。

第二,不要把 %temp% 文件夹本身删掉再新建一个同名目录。虽然 Windows 会自动重建它,但某些软件的进程句柄还挂在这个路径上,你删掉父目录会导致它们暂时性找不到位置。清空里面内容已经足够,没必要删目录本身。

第三,特殊软件要注意“缓存”路径的关联。比如西门子 PLCSIM 会在 %temp%\siemens\plcsim 以及 %localappdata%\siemens\plcsim 下建立仿真缓存,这种目录清理前必须关闭 PLCSIM 和 TIA Portal 相关项目。如果开着仿真就动手删,轻则软件找不到仿真数据,重则正在打开的项目状态错乱。很多问题看起来像“系统缓存没清干净”,实际上是清理时机选错了。

3. 一键自动清理脚本:如何在保留个人文件的同时算出释放空间

3.1 先聊聊我的白名单思路

光靠手动点资源管理器,虽然安全,但麻烦。尤其是每个月都要清理一次的情况下,重复性劳动很消耗耐心。所以我后来把清理动作写成脚本,但脚本的设计原则不是“扫描整个磁盘,把疑似垃圾删掉”,而是“白名单内只删临时目录”。这区别很重要。

先想清楚你要保护什么:个人文档、照片、已安装软件,这些都不能动。白名单方案里,我根本不去遍历 C:\Users\某某\Documents、Pictures 这些目录,自然就不会误删。我只需要把用户级 Temp、系统级 Temp 和 Windows Update 下载目录列出来,针对它们做删除。这个边界足够清晰,清理效果也足够覆盖日常百分之九十以上的临时垃圾。

当然,脚本要能算出来“这次到底释放了多少空间”。我的思路是:删除前分别统计目标目录的总大小,删除后再统计一次,两个数字一减,得到近似释放空间。为什么叫近似?因为会有个别文件被进程锁定删不掉,这个数字可能比你实际释放的略大;而且如果在删除过程中软件还在写缓存,统计也会出现偏差。但对“清理完成后告知我释放的空间大小”这个诉求来说,已经足够实用。

3.2 PowerShell 清理脚本样例

下面这个脚本就是我现在使用的最小可用版本。保存为 .ps1 文件,用管理员身份运行 PowerShell,执行文件路径即可。

# clean-temp.ps1 $Targets = @( "$env:LOCALAPPDATA\Temp", "$env:WINDIR\Temp", "$env:WINDIR\SoftwareDistribution\Download" ) function Get-DirSize { param([string]$Path) if (-not (Test-Path -LiteralPath $Path)) { return 0 } $sum = (Get-ChildItem -LiteralPath $Path -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum if ($null -eq $sum) { return 0 } return $sum } $before = 0 foreach ($t in $Targets) { $before += Get-DirSize $t } foreach ($t in $Targets) { if (Test-Path -LiteralPath $t) { Get-ChildItem -LiteralPath $t -Force -ErrorAction SilentlyContinue | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue } } $after = 0 foreach ($t in $Targets) { $after += Get-DirSize $t } $freed = $before - $after "清理前目标目录占用 {0:N2} MB" -f ($before / 1MB) "清理后目标目录剩余 {0:N2} MB" -f ($after / 1MB) "本次释放空间约 {0:N2} MB" -f ($freed / 1MB)

脚本第一段把三个目标目录放进数组,第二段统计大小,第三段删除内容,第四段再次统计。其中的 -ErrorAction SilentlyContinue 很关键,它会让发现被占用文件时自动跳过而不是报错中断。根目录本身不删除,只删除里面的子项,所以不会出现把某个文件夹路径整根拔掉的危险。

运行前有几个条件。脚本不能在你正在下载 Windows 更新时跑,否则会破坏更新状态;如果 SoftwareDistribution\Download 里正好有文件被占用,删除会跳过这些文件,系统不会出问题,等下次更新空闲时再清一次就行。另外,如果你只用了普通权限,系统 temp 目录可能删不干净,这是正常现象,所以请用管理员权限运行。

3.3 每次跑完自动报告空间,甚至可以加进计划任务

脚本最后输出的三行就是清理报告。你不需要再打开磁盘属性反复看剩余空间,占用变化已经用目标目录的前后大小算出来了。如果想把时间固定下来,还可以把它扔进任务计划程序,设置成每个月第一个周六的凌晨执行。

任务计划程序的配置我给一个参考:在“操作”里新建操作,程序写 powershell.exe,参数写成-ExecutionPolicy Bypass -File "C:\Scripts\clean-temp.ps1",触发器设为按周或按月执行。因为脚本用的是白名单路径,重复触发也不会波及个人文件,可以放心。个人建议的时间点是刚重启完电脑、Windows Update 的下载任务还没开始跑的时候,比如凌晨 3 点到 5 点。

如果你不希望任务计划程序自动跑,改成每次重启后手动执行也行。脚本不会删除你的照片、文档,也不会进入桌面文件夹,所以它的操作边界非常容易向别人交代。我给自己电脑上是这么配合的:平时打开存储感知,每个月手动跑一次脚本,两者的清理范围基本不冲突,存储感知负责回收站和下载文件夹,脚本负责临时目录和更新下载缓存。

4. 千万别乱删的五个场景:这些“缓存”删错了比不删还糟

4.1 WinSxS:看着像缓存,动了会掉系统组件

C:\Windows\WinSxS 是一个容易被当成“垃圾”的大家伙。它的名字里有 Windows 和 SxS(并排存储),本质是系统组件库,Windows 更新、驱动更新、功能启用都会从这里取文件。直接进 WinSxS 把旧版本组件删掉,会导致后续系统更新不完整,甚至某些功能无法启用。

真正的清理方式是 DISM。管理员 PowerShell 里运行:

DISM /Online /Cleanup-Image /StartComponentCleanup

这个命令会清理旧的、替代的组件版本,保留正在使用的。它不会让你的 C 盘瞬间多出十几 GB,但它是安全路径。磁盘清理工具里的“Windows 更新清理”本质上也是做类似的事,所以普通用户完全可以把脏活交给磁盘清理,不用自己碰 DISM。

4.2 C:\Windows\Installer:体积不小,但它不是临时残留

这个目录经常被第三方优化软件盯上,因为里面有大量 .msi 和 .msp 文件,看起来像安装残留。实际上 Windows Installer 需要靠它们完成卸载、修复、补丁升级。你把文件删了,程序卸载时会提示找不到源文件,重装软件时也可能报错。这条路最好不要走。至于某些声称能“安全压缩” Installer 目录的工具,用在办公电脑上风险不小,我不太建议普通用户尝试。

4.3 系统还原点和卷影副本:删除前想好要不要后悔药

系统还原点、卷影副本存放在 System Volume Information 目录,普通用户根本看不见。如果空间紧张,可以通过磁盘清理的“清理系统文件—更多选项—系统还原和卷影副本”去删除旧的还原点,而不是用解锁工具强删 System Volume Information。还原点是你系统出问题时的后悔药,删掉之后就无法回退到过去某个时间点。我见过有人为了省空间把所有还原点都删了,结果第二天装驱动把系统搞蓝屏,想恢复都没有日期可选。说白了,优先删临时文件,还原点反而是最不该优先动的那部分。

4.4 AppData 里那些“貌似缓存”的文件夹:你以为能重建,实际是配置

AppData 下有 Local、LocalLow、Roaming 三个目录,里面大量文件夹确实带 Cache 字样,但也混着用户配置、许可证、离线数据、聊天记录等。如果整体删一遍,后果往往不是“慢一点重新生成”,而是软件直接被重置成初始状态。有些工具箱允许你修改缓存目录,例如把某个应用的缓存换到 D 盘,这种改法本身没问题,关键是必须用软件自带的设置项去做,而不是手动把文件夹从这里搬到那里。软件不知道你的搬迁,会把新路径当成空目录重建,旧路径下的数据等于白搬。

我再强调一个容易被误判的细节:聊天工具或云盘临时共享文件,有时会生成类似 fileprovider/temp/share_file_temp 一类的路径,看着特别像垃圾缓存,但如果客户端正在往这个位置写入一个待转发文件,你提前清空,对方收到的就是一个损坏文件。清理这种共享临时文件的前提是退掉对应客户端,或者确认当前没有文件正在传输。

4.5 pagefile.sys、hiberfil.sys 这些大块头,不能当垃圾删

在 C 盘根目录开着“显示隐藏的系统文件”后,你会看到 pagefile.sys、swapfile.sys、hiberfil.sys 这几个巨型文件。它们不是临时痕迹,pagefile 是虚拟内存,hiberfil 是休眠文件。想缩小它们应该去“系统属性—高级—性能—虚拟内存”里调整页面文件大小,或者用 powercfg /h off 关闭休眠功能,而不是直接右键删除。强行删除系统占用文件的结果一般是权限报错,或者下一次启动时系统重新创建,对省空间没有真正帮助。

5. 清理之后的核账:释放空间验收与常见疑虑

5.1 为什么清完空间没变化,甚至看起来更少了

清理完脚本显示释放了几个 GB,但打开“此电脑”一看可用空间没变,这是很常见的现象,不需要慌。常见原因有两个。

第一,文件还在被进程占用。比如浏览器开着的时候去清理浏览器缓存,或软件正在使用 Temp 中的某个文件,删除操作被系统静默跳过,实际释放量自然小于统计值。重启一次电脑再清一遍,通常能把大部分剩余文件清走。

第二,Windows 更新清理需要系统重新计算。磁盘清理工具删除更新缓存时,文件可能先被标记为删除但空间还在占用,等待系统服务后续释放。这种情况等一两个小时,或者再打开磁盘清理复核一次。

如果经过上述步骤可用空间依然没变,那就别执着于“临时目录”了,用 TreeSize 之类的空间分析工具看一下到底是什么文件夹占用最大。空间不会凭空消失,它只是在一个你没想到的位置上。

5.2 验证系统稳定:清完不是直接关机,而是检查这几件事

清理动作做完,建议做一次简单验收。打开 Windows Update 检查更新,确认更新任务正常,不提示找不到源文件;把常用的软件各启动一次,确认没有弹出缺 dll、缺组件等报错;到设备管理器看一眼有没有带黄色感叹号的设备。如果这些都正常,清理就是安全的。

我个人的习惯是每个月按固定顺序做一轮:先磁盘清理并选择清理系统文件,然后重启电脑,重启之后再清空 %temp%,最后用脚本跑一遍生成报告。这套顺序里,磁盘清理负责处理系统组件层面的更新缓存,重启是为了释放文件句柄,脚本负责把剩余临时文件收拾干净。你也可以先脚本后重启,但别一边清一边开着大量软件,那样效果会差很多。

最后分享一个实际经验:不要追求“把 C 盘清理到极限”。缓存空间是在帮你减少重复下载和加速启动的,把系统调教到完全没有任何临时文件,不仅省不了多少空间,还可能让软件反复重建缓存,结果性能反而变差。安全的清理不是把电脑掏空,而是把那些明显失效、重复、残破的临时文件请出去,给真正有用的数据留出位置。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询