
你有没有遇到过这种情况电脑C盘好好的就红了Win11提示空间不足但你又不敢乱删东西怕把系统弄坏上周同事抱了台办公本过来C盘500GB的盘只剩5%我打开存储一看临时文件、旧版更新缓存、软件日志加起来足足占了30多GB。这些东西平时看不见但占了大量磁盘空间。这篇文章我结合自己多年清理Win11磁盘的实践经验把整个临时文件清理流程从原理到实操拆开来讲包括清理哪些路径、哪些东西碰不得、怎么自动扫描并安全删除、如何精确统计释放空间以及清理过程中最常见的坑和解决办法。不管你是普通用户还是经常帮人维护电脑的按着这套思路做下来至少能安全释放出十几个G的空间。1. 内容整体设计与思路拆解1.1 先说清楚Win11的临时文件到底从哪来很多朋友以为临时文件就是浏览器缓存其实Win11里的临时文件远不止这些。系统运行过程中几乎每时每刻都在制造临时数据软件安装包解压出来的临时目录、Windows更新留下的补丁安装副本、系统错误报告生成的日志、缩略图缓存、更新传输优化缓存甚至你卸载软件之后残留的日志和配置文件。最夸张的是Windows更新缓存。Win11每个月的累积更新包动辄几百MB到几GB系统下载完补丁后会把安装包留在C:\Windows\SoftwareDistribution\Download目录下。正常情况下装完补丁就不会再用了但系统并不会自动帮你删干净。我遇到最极端的情况光这个目录就占了12GB。再叠加C:\Windows\Temp、用户目录下的AppData\Local\Temp、以及浏览器和应用自己创建的临时目录日积月累磁盘就越来越紧张。还有个容易被忽视的占空间大户是传递优化缓存。Win11默认开启P2P更新分发你从微软和其他电脑之间相互传更新包这些数据会缓存在本地理论上能加快更新速度但对绝大多数家庭用户来说意义不大白白占了好几个G。1.2 清理方案的三种路线与取舍市面上清理临时文件的方案不少我用下来把它们分成三类第一类是系统自带工具包括存储感知、磁盘清理和cleanmgr命令。优点是安全可靠、不会误删系统文件缺点是清理不彻底很多垃圾文件目录根本没纳入扫描范围而且只能告诉你释放了多少没法让你自由控制清理策略。第二类是第三方清理软件像CCleaner、Wise Disk Cleaner这些。优势是一键扫描、界面直观但隐患也很明显它们为了清理效果经常会扫描注册表和软件配置一个判断不准确就可能把软件的正常设置或者激活状态搞坏。我自己帮人维护电脑时遇到过多起因为用第三方清理导致软件需要重新激活的案例所以现在基本不推荐。第三类是手动指定路径命令行脚本清理也就是我这篇文章重点讲的方式。先把系统里那些“确定能删”的临时目录列清楚再用脚本按路径扫描、统计、删除最后输出释放的空间大小。优点是完全可控、不碰任何不该碰的东西缺点是需要自己维护一个脚本有一定的学习成本。我的建议是日常清理用系统自带的存储感知加磁盘清理就够了但如果你想做到“自动扫描、安全删除、精确统计释放空间”就必须自己上手写清理脚本。这也正是这篇文章下面几节要展开的内容。2. 核心细节解析与实操要点2.1 清理目标的路径与安全判断标准想安全清理第一步不是动手删除而是搞清楚哪些目录是“无效的临时数据”哪些目录关乎系统和软件运行。下面是我整理的一个清理路径速查表基本覆盖了Win11上临时文件的全部主要来源。目标内容典型路径能否安全删除注意事项当前用户临时目录C:\Users\用户名\AppData\Local\Temp可以正在运行的程序会占用其中部分文件跳过即可系统临时目录C:\Windows\Temp可以部分文件需要管理员权限删除失败直接跳过Windows更新缓存C:\Windows\SoftwareDistribution\Download可以建议删除前先停止Windows Update服务传递优化缓存C:\Windows\SoftwareDistribution\DeliveryOptimization可以家庭用户删掉影响很小缩略图缓存C:\Users\用户名\AppData\Local\Microsoft\Windows\Explorer可以删除后重建文件夹里面thumbcache_*.db可删错误报告日志C:\ProgramData\Microsoft\Windows\WER可以系统诊断日志对普通用户没保留价值崩溃转储文件C:\Windows\LiveKernelReports、C:\Windows\MiniDump可以仅用于调试蓝屏一般用户不需要预读取缓存C:\Windows\Prefetch可以但不建议删了会影响软件启动速度轻微提升但没有太大意义回收站文件C:\$Recycle.Bin可以通过资源管理器清空回收站更稳妥旧版Windows文件C:\Windows.old可以如果你确认不需要回退到旧版本再删软件日志各种logs、*.log文件需要筛选只建议用磁盘清理筛选历史日志不建议全局搜*.log删驱动程序旧版本C:\Windows\System32\DriverStore\FileRepository不建议手动删需要使用dism /start-componentcleanup清理这张表里特别值得解释的是“Windows更新缓存”。很多人一看到SoftwareDistribution就把整个文件夹删掉了这是个坏习惯。这个目录下不只有Download还有DataStore后者记录了更新的历史数据库删掉它可能导致后续更新查询出错。所以我的原则是只清Download子目录不要动整个SoftwareDistribution。2.2 哪些东西坚决不能碰越是有经验的维护者越清楚清理的边界在哪里。磁盘清理最大的风险不是“清了垃圾”而是“把不该清的清了”。下面几个地方我每次清理前都会反复提醒自己用户目录下的AppData\Local其它子目录。E.g.Microsoft\Edge、Microsoft\VSCode等应用的数据目录不能乱删否则软件配置、登录状态、甚至工程设置全都没了。Temp以外的目录一律慎动。C:\Windows\Installer目录。这个目录存放的是软件安装程序编译后的缓存文件很多软件修复、卸载、升级、打补丁都要依赖它。删完之后最典型的表现是某些软件无法卸载、无法更新甚至安装新版本时报错。系统盘根目录下看起来像垃圾的文件比如hiberfil.sys和pagefile.sys。这些是休眠文件和虚拟内存文件文件体积很大但删了反而可能造成休眠失败或者系统不稳定。注册表里的“临时启动项”。我见过不少人为了清理开机项直接删注册表里的Run键结果软件启动路径失效。注册表不是不能动但必须明确每一项是干什么的。屏幕快照和历史版本。如果你开了系统的历史文件功能清理时要看清它列出的“以前的版本文件”里面可能包含你的文档历史版本删除后就找不回来了。一句话总结临时文件清理的目标很明确就是那些“系统或程序生成后不再需要、重新启动就会重新生成的缓存性文件”而不是用户数据和软件配置本身。3. 实操过程与核心环节实现3.1 先做一次系统自带的快速清理正式进入脚本清理之前我建议先手动跑一遍系统自带的清理把那些最简单、最安全的垃圾先清掉也给后续脚本清理减小压力。打开设置进入“系统 存储”系统会显示一个磁盘空间使用概览。点击“临时文件”可以看到系统扫描出的可清理项列表。旁边的“释放空间”按钮会执行一轮清理。此时你也能直观看到系统认为哪些是临时文件。但注意系统自带的临时文件扫描在Win11 26H2版本上依然有一个局限它默认不包含Windows更新缓存的详细选项需要你点开“高级选项”才会展示“旧的Windows更新清理”。这一步建议勾选上但前提是你不打算回退系统版本。3.2 用磁盘清理工具做第二遍补充扫描接下来运行cleanmgr命令。WinR打开运行框输入cleanmgr并回车选择C盘。点击“清理系统文件”选项后Windows会重新扫描一遍系统目录这时候会出现更完整的清理项包括“Windows更新清理”、“设备驱动程序包”、“系统错误内存转储文件”、“临时文件”等。这里有个很多人不知道的小技巧想自定义磁盘清理的清理范围可以运行带参数的cleanmgr也就是cleanmgr /sageset:1这会弹出一个配置界面勾选你要清理的项目再运行cleanmgr /sagerun:1执行。通过这种方式可以精细控制清理项目但它默认关联的是当前账户配置要在管理员权限下操作才行。我习惯把“Windows更新清理”、“临时文件”、“缩略图”、“传递优化文件”都勾上取消勾选“下载”和“回收站”避免操作系统误删我已经手动下载好的文件。3.3 编写PowerShell脚本实现自动扫描、安全删除和空间统计系统自带工具能做的事情比较有限跟“自动扫描并删除系统临时文件、Windows更新缓存、软件日志、无效缓存、回收站冗余文件保留个人文档、照片、安装软件等重要数据清理完成后告知释放空间”这一需求对照下来最缺的是两件事一是按照指定路径批量清理二是统计每次清理释放的空间大小。这时候就得动手写PowerShell脚本了。下面这个脚本是我实际在用的清理脚本的简化版本核心逻辑是三步先测量目标目录大小再按规则删除最后测量清理后的目录大小两者相减得到释放空间。# 需要在管理员权限的PowerShell中运行 $targets ( C:\Windows\Temp, C:\Users\Public\Documents ) # 获取目录大小递归计算 function Get-DirSize { param([string]$Path) if (-Not (Test-Path $Path)) { return 0 } try { $size (Get-ChildItem $Path -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum return [math]::Round($size / 1MB, 2) } catch { return 0 } } # 删除目录下所有内容跳过占用中的文件 function Clear-DirContent { param([string]$Path) if (-Not (Test-Path $Path)) { return } Get-ChildItem $Path -Force -ErrorAction SilentlyContinue | ForEach-Object { Remove-Item $_.FullName -Recurse -Force -ErrorAction SilentlyContinue } } $totalFreed 0 foreach ($target in $targets) { $before Get-DirSize $target if ($before -eq 0) { continue } Clear-DirContent $target $after Get-DirSize $target $freed $before - $after $totalFreed $freed Write-Host ({0} - 释放 {1} MB -f $target, $freed) } Write-Host (本次清理总共释放空间: {0} MB -f $totalFreed)上面是个最基础的目录清理模板。实际用的时候我会把目标路径扩充成下面这样形成一个完整的目标清单$tempUserPaths ( $env:LOCALAPPDATA\Temp, $env:WINDIR\Temp, $env:WINDIR\SoftwareDistribution\Download, $env:WINDIR\SoftwareDistribution\DeliveryOptimization, $env:LOCALAPPDATA\Microsoft\Windows\Explorer # 缩略图缓存 )清理Windows更新缓存之前需要先暂停Windows Update服务否则文件被系统占用会删除失败删完再恢复服务。这个逻辑在脚本里要特别处理一下否则你统计到的释放空间会少一大截。暂停和恢复服务的代码片段如下Stop-Service wuauserv -Force -ErrorAction SilentlyContinue # 执行清理... Start-Service wuauserv -ErrorAction SilentlyContinue注意$env:WINDIR在管理员PowerShell中指向的是Windows系统目录如果系统盘不是C盘这个写法也能自动适配。如果平时习惯固定C盘直接用C:\Windows硬编码也行但用环境变量更保险。3.4 保留数据和统计空间脚本里的排除逻辑脚本里最需要小心的地方是排除逻辑。我在Clear-DirContent函数内部其实会加一个白名单判断比如删除$env:LOCALAPPDATA\Temp时跳过.lock文件和部分正在使用的进程文件。原因很简单这些文件虽然会出现在临时目录里但它们可能被正在运行的程序占用强行删除不仅会失败还可能导致程序异常。更重要的排除规则是应用层面。比如Chrome和Edge浏览器它们打开时会锁住当前会话的缓存文件但历史缓存目录是可以删的。微信、QQ之类的应用它们的聊天记录和图片默认放在AppData\Roaming或Documents下清理时一定不能扫到这些用户目录。我的脚本策略是只清理系统级临时路径和软件运行时产生的日志目录不递归扫描C:\Users下的所有文件夹避免误伤个人数据。统计空间这块脚本里用的是“前后对比”的思路但要注意一个细节第一次统计目录大小和第二次统计目录大小之间如果有后台程序在持续写入文件统计出来的释放空间就会偏小但至少不会出现负数。如果脚本跑完之后你发现清理结果跟系统自带工具显示的释放空间对不上不用慌张这是正常的因为统计口径不同、扫描路径不同。4. 常见问题与排查技巧实录4.1 文件被占用导致删除失败怎么办这是清理临时文件时遇到最多的一个问题。表现在两个方面一是删除某目录时报“文件正在使用”二是统计出来的释放空间比预期小很多。我的排查思路是按顺序来看打开任务管理器切到“详细信息”选项卡看有没有进程在频繁读写磁盘。如果是Windows Update服务占用就按上面提到的Stop-Service wuauserv处理。如果是应用进程占用比如多开了一大堆软件最简单的做法是先把它们退出再进行清理。如果实在无法退出就跳过占用文件只删能删的部分。对于PowerShell脚本中的删除失败因为脚本里加了-ErrorAction SilentlyContinue所以不会报错中断但你应该在释放空间统计上能看到差异然后单独处理没删掉的文件。4.2 清理之后系统变慢了通常是什么原因有几次我帮人清理完临时文件后对方反馈系统变慢了第一反应很慌后来排查下来发现都是虚惊。最常见的情况是清理了缩略图缓存和预读取缓存后文件管理器需要重新加载大量缩略图磁盘繁忙导致读取变慢。这个现象通常在重启电脑之后就会恢复正常。真正需要注意的是“把应用缓存删了”导致的变慢。有些应用把常用资源放在缓存目录里你删了它之后应用启动时要从网络或安装包重新下载资源自然感觉卡。解决方法是区分缓存和临时文件的概念比如浏览器的缓存文件你删了没关系最多重新加载网页慢一点但像Adobe系列软件、大型游戏的着色器缓存删掉之后重新编译会非常耗时且毫无必要。这类软件的缓存是否清理一定要在动手前想清楚。4.3 清理脚本报错、误删风险的防御策略这个脚本我用了很久也踩过不少坑总结出三条防御策略第一条脚本执行前备份目标目录清单。你在删除前把当前扫描到的文件数、文件大小输出到日志文件万一出了事还能知道问题出在哪。第二使用WhatIf参数先在“试运行”模式下过一遍。PowerShell的Remove-Item支持-WhatIf参数加了这个参数后不会真的删除只会打印出将要删除的路径。如果你实操时不敢确定可以先跑一遍试运行看看输出结果。第三给脚本加白名单和黑名单机制白名单里放“只读不删”的用户路径黑名单里放“必须删除”的系统临时路径从机制上杜绝误删个人文档和照片。4.4 关于Win11 C盘空间管理的其他经验最后分享几个跟临时文件清理相关的额外经验。虚拟内存文件pagefile.sys占用好几个G但我不建议你为了省空间把它关掉。正确做法是让系统自动管理如果你实在想控制体积可以限定在4到8GB之间。还有Win11 26H2和后续版本对存储感知的默认策略已经更激进了但自动清理仍然不够彻底手动加脚本清理才是治标又治本的路径。关于C盘留多大合适我的经验是至少保留系统总空间的20%剩余。如果你的硬盘是512GBC盘分了200GB那剩余空间长期低于40GB就要开始关注了。磁盘快满的时候临时文件清理通常能解燃眉之急但长期来看定期把大型软件和资料迁移到D盘才是根本解决方案。我自己现在的习惯是每个月固定做一次临时文件清理基本流程就是先用系统自带工具做常规清理再用自己的PowerShell脚本处理那些系统工具扫不到的目录整个过程大概十分钟每次都能稳定释放几个G的空间。这套方法我用了快两年从没出现过误删和个人数据丢失的情况。你可以先从文章里的基础脚本抄作业跑起来慢慢根据自己的使用习惯增加和删减清理目录最终变成一套适合你自己电脑的清理方案。