我不知道你有没有经历过这种场景:电脑用着用着,右下角突然弹出一个红色提示“磁盘空间不足”,尤其是 C 盘,说红就红,一点缓冲都不给。更气人的是,你把磁盘属性打开,想看看空间到底去哪了,结果发现光是临时文件就占了十几个 G。手动删吧,Windows 的临时文件目录散得到处都是,今天清完明天又长回来,第三方清理工具又怕全家桶。后来我干脆用脚本自己写了一套基于 PowerShell 的 Windows 11 临时文件自动化管理方案:双击一下,自动清理指定目录中超过一定天数的临时文件,自动输出日志,再挂到任务计划程序里每天定时跑。这套方案我用了大半年,C 盘再没因为临时文件红过。这篇就把整个方案的思路、脚本、配置步骤和踩过的坑完整分享出来,适合有一定动手欲望、又不想把系统交给来路不明工具的 Windows 11 用户参考。
1. 为什么要搞一套临时文件清理脚本
1.1 Windows 11 临时文件都藏在哪儿
很多人一说清理临时文件,第一反应就是打开运行框输入 %temp%,然后进去删东西。但 Windows 11 的临时文件远不止这一个目录。我整理了一下常见的分布位置,你看了就知道为什么手动清理永远清不干净。
| 路径 | 主要来源 | 占用情况 | 清理建议 |
|---|---|---|---|
%TEMP% |
当前用户的所有应用临时文件 | 一般几个 G,重度使用可达几十 G | 可放心清理,运行中的文件会跳过 |
C:\Windows\Temp |
系统安装程序、驱动、更新产生的临时文件 | 数 G 到十几 G 不等 | 需要管理员权限,可清理 |
C:\Windows\SoftwareDistribution\Download |
Windows Update 下载缓存 | 几个 G 起步 | 建议停止 Windows Update 服务后清理 |
C:\Users\用户名\AppData\Local\Microsoft\Windows\Explorer |
文件夹缩略图缓存 | 数百 MB 到几个 G | 可清理 |
C:\Users\用户名\AppData\Local\Microsoft\Windows\INetCache |
IE 内核缓存,Edge 也会用到 | 几个 G | 可清理 |
C:\Windows\Prefetch |
系统预读取文件 | 几百 MB | 可清理,但收益不大 |
| 浏览器缓存目录 | Edge、Chrome 等浏览器的网页缓存 | 视使用习惯而定,可能很大 | 建议在浏览器内清理,或脚本排除浏览器运行期间清理 |
这里有个很容易被忽略的点:屏幕截图、剪贴板历史、Windows 聚焦壁纸缓存这些东西,也都会往 AppData\Local 下面的目录里堆文件。时间一长,你这台 Windows 11 的 C 盘就会像衣柜里塞了一堆塑料袋一样,看着没多少,实际占用惊人。
1.2 手动清理的痛点和脚本化思路
手动清理的痛点,我相信大家都有体会。系统自带的磁盘清理工具每次扫描都要转圈半天,而且默认只给你勾选一小部分项目,什么“下载”“回收站”动不动就提醒你“此项目不会立即删除”。那个“清理系统文件”的按钮藏得很深,不点开还不知道有这层。至于第三方清理工具,我早年也用过不少,后来发现有些工具要么夹带其他软件,要么清理完导致某些软件配置丢失,安全性和可控性都不太理想。
而且手动清理有一个根本问题:没有规律。你心情好清理一次,下次想起来可能已经是两个月后。临时文件这个东西,永远在你没想到的时候偷偷膨胀。真正的解法就是自动化:固定时间、固定逻辑、固定范围,脚本跑完给你一份日志,删了什么清清楚楚。这就是我写这套方案的初衷——把“清理临时文件”从一个动作变成一个自动执行的系统维护任务。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 方案选型:脚本相比第三方工具的价值
2.1 为什么我选了 PowerShell 而不是 bat 或第三方工具
搜 Windows 清理脚本,网上最多的就是 bat 批处理方案。bat 的优点是简单,几行 del /q /s %temp%\* 就能跑;但缺点也很明显:没有日志记录、没有容错处理、路径里如果带空格和特殊字符很容易出奇奇怪怪的问题,而且你不知道某一轮到底删了多少东西。对于偶尔手动跑一次够用,但是要挂计划任务每天自动执行,bat 的“裸奔”感太强了。
PowerShell 就不一样。它的逻辑很清晰,面向对象的管道,能方便地做条件过滤,比如按“最后写入时间”筛选文件;能内置错误处理机制,文件被占用不会中断整个脚本;还能把执行结果格式化成日志文件,方便回看。另外 PowerShell 脚本天然支持参数化,一行命令带不同的参数就能切换模式:调试模式、真实清理模式、只看不删模式。这些都是 bat 很难优雅实现的。
第三方工具就不用多说了。不是说完全垃圾,但它的清理策略对用户不透明,你不知道它到底按什么规则删文件,也不排除存在捆绑行为。对于我这种喜欢“所有操作尽在掌控”的人来说,脚本方案最大的吸引力就在这四个字:完全可控。你可以把脚本代码从头到尾读一遍,确认它不碰不该碰的东西,再挂到计划任务里。
2.2 清理策略的安全边界
写清理脚本,最重要的不是怎么删文件,而是“哪些东西绝对不能碰”。我的方案定了几条硬性规则:
- 只清理明确定义的目录,不搞“全盘遍历删除”这种危险操作。
- 只删除“最后写入时间超过 N 天”的文件,默认 N=7,避免误删正在被使用的临时文件。
- 删除文件后,尝试删除空目录,但不会强制递归删除目录本身。
- 不碰系统关键文件、注册表、驱动文件、用户文档目录。
- 每次执行
