一、为什么 C 盘会越来越小

Windows C 盘空间变小,通常不是某一个文件导致的,而是多个目录长期积累造成的。
常见来源如下:
| 类型 | 常见目录 | 是否适合清理 |
|---|---|---|
| 用户临时文件 | C:\Users\用户名\AppData\Local\Temp |
可以清理 |
| 系统临时文件 | C:\Windows\Temp |
可以清理 |
| Windows 更新缓存 | C:\Windows\SoftwareDistribution\Download |
可以清理 |
| 回收站 | $Recycle.Bin |
可以清理 |
| 错误报告 | C:\ProgramData\Microsoft\Windows\WER |
可以清理 |
| 缩略图缓存 | AppData\Local\Microsoft\Windows\Explorer |
可以清理 |
| 组件存储 | C:\Windows\WinSxS |
不能手动删,需用 DISM |
| 安装缓存 | C:\Windows\Installer |
不建议删除 |
C 盘清理最重要的不是"删得多",而是"删得准"。缓存类文件可以清理,但系统安装缓存、用户个人资料和程序安装目录不应该被脚本自动删除。
二、哪些文件可以安全清理
本脚本主要清理以下内容。
1. 当前用户临时文件
路径通常是:
text
C:\Users\你的用户名\AppData\Local\Temp
在 PowerShell 中可以通过变量表示:
powershell
$env:TEMP
这里存放的是软件运行过程产生的临时文件,例如安装包缓存、解压缓存、浏览器临时文件等。
2. 系统临时文件
路径是:
text
C:\Windows\Temp
这是 Windows 系统级临时目录,需要管理员权限才能清理得更完整。
3. Windows Update 下载缓存
路径是:
text
C:\Windows\SoftwareDistribution\Download
Windows 更新下载的补丁文件会缓存在这里。更新完成后,这些文件通常可以清理。
4. 回收站
很多时候我们删除了大文件,但只是进入了回收站,并没有真正释放磁盘空间。
5. 缩略图缓存
Windows 资源管理器会为图片、视频、PDF 等生成缩略图缓存。文件多的时候,这部分也会占用不少空间。
6. Windows 错误报告
路径包括:
text
C:\ProgramData\Microsoft\Windows\WER\ReportArchive
C:\ProgramData\Microsoft\Windows\WER\ReportQueue
这些是系统或软件崩溃后生成的错误报告缓存。

三、哪些目录不建议手动删除
清理 C 盘时,最容易出问题的不是没有清理,而是乱清理。
下面这些目录不建议用脚本直接删除:
text
C:\Windows\Installer
C:\Windows\WinSxS
C:\Program Files
C:\Program Files (x86)
C:\Users\用户名\AppData\Roaming
C:\Users\用户名\Desktop
C:\Users\用户名\Documents
C:\Users\用户名\Downloads
尤其是:
text
C:\Windows\Installer
这个目录虽然可能很大,但它保存了 MSI 安装包缓存。乱删之后,可能导致软件无法修复、升级或卸载。
再比如:
text
C:\Windows\WinSxS
这是 Windows 组件存储目录,不能手动删除。正确方式是使用:
powershell
DISM.exe /Online /Cleanup-Image /StartComponentCleanup
四、C 盘清理脚本设计思路
脚本的核心原则是:
text
只清理缓存,不碰用户资料
只清理临时文件,不删除系统关键组件
能用系统工具清理的地方,不手动暴力删除
正在占用的文件跳过,不强制破坏进程
整体流程如下:

五、PowerShell 完整清理脚本
脚本文件已经放在压缩包中:
text
scripts/Clean-CDrive.ps1
执行方式:
powershell
Set-ExecutionPolicy Bypass -Scope Process -Force
.\Clean-CDrive.ps1
核心清理逻辑包括:
powershell
Clear-Folder -Path $env:TEMP -Name "当前用户临时文件"
Clear-Folder -Path "C:\Windows\Temp" -Name "Windows 系统临时文件"
Clear-Folder -Path "C:\Windows\SoftwareDistribution\Download" -Name "Windows Update 下载缓存"
Clear-RecycleBin -Force -ErrorAction SilentlyContinue
DISM.exe /Online /Cleanup-Image /StartComponentCleanup
完整脚本较长,建议直接使用压缩包中的 .ps1 文件,避免复制时因换行或编码导致执行失败。

六、BAT 一键启动脚本
为了方便使用,可以直接运行压缩包中的:
text
scripts/run-clean-c.bat
使用方式:
text
右键 run-clean-c.bat
选择:以管理员身份运行
目录结构如下:
text
C盘清理工具
├── Clean-CDrive.ps1
└── run-clean-c.bat
七、如何确认临时文件是否清理成功
清理完成后,可以手动打开用户临时目录:
powershell
explorer $env:TEMP
也可以打开系统临时目录:
powershell
explorer C:\Windows\Temp
如果目录里只剩少量文件,说明清理是正常的。
有些文件无法删除,是因为正在被程序占用,例如:
text
浏览器缓存
微信缓存
杀毒软件临时文件
IDE 编译缓存
系统服务占用文件
这类文件被跳过是正常现象,不建议强制结束大量进程去删除它们。
八、常见问题说明
1. 为什么有些临时文件删不掉?
因为文件正在被系统或软件占用。脚本使用的是安全删除方式:
powershell
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
无法删除的文件会自动跳过,不会中断整个清理流程。
2. 能不能直接删除 C:\Windows\Installer?
不建议。这个目录是 Windows Installer 缓存目录,里面可能保存软件安装、修复、卸载所需的 MSI/MSP 缓存文件。误删之后可能出现软件无法卸载、软件无法升级、软件无法修复等问题。
3. 能不能直接删除 C:\Windows\WinSxS?
不能手动删除。正确方式是使用 DISM:
powershell
DISM.exe /Online /Cleanup-Image /StartComponentCleanup
这也是脚本中采用的方式。
4. 清理 Windows Update 缓存会不会影响系统?
一般不会影响已经安装完成的补丁。脚本清理的是下载缓存目录:
text
C:\Windows\SoftwareDistribution\Download
如果以后需要更新,Windows 会重新下载所需文件。
5. 为什么脚本要停止 wuauserv 和 bits 服务?
因为 Windows Update 下载缓存可能正在被以下服务占用:
text
wuauserv:Windows Update 服务
bits:后台智能传输服务
停止服务后再清理缓存,成功率更高。清理完成后,脚本会重新启动它们。
九、清理项对比表
| 清理项 | 是否包含在脚本中 | 风险等级 | 说明 |
|---|---|---|---|
| 用户 Temp | 是 | 低 | 常规临时文件 |
| 系统 Temp | 是 | 低 | 需要管理员权限 |
| Windows Update 下载缓存 | 是 | 低 | 会自动重新下载 |
| 回收站 | 是 | 中 | 删除后不易恢复 |
| 缩略图缓存 | 是 | 低 | 系统会自动重建 |
| 错误报告缓存 | 是 | 低 | 主要用于问题诊断 |
| Delivery Optimization 缓存 | 是 | 低 | Windows 分发优化缓存 |
| WinSxS | 否,使用 DISM | 中 | 不能手动删除 |
| Windows Installer | 否 | 高 | 不建议清理 |
| 用户下载目录 | 否 | 高 | 可能包含个人文件 |
| 桌面、文档 | 否 | 高 | 个人数据,不自动删除 |
十、总结
C 盘清理的核心不是"删得越多越好",而是要做到:
text
知道哪些能删
知道哪些不能删
尽量使用系统推荐方式清理
避免误删用户资料和系统关键目录
本文提供的 PowerShell 脚本主要清理用户临时文件、系统临时文件、Windows Update 缓存、错误报告缓存、缩略图缓存、回收站、Delivery Optimization 缓存和 Windows 组件存储缓存。对于日常电脑维护来说,这个脚本已经能覆盖大部分安全清理场景。执行完成后,建议重启一次电脑,让系统释放仍被占用的缓存文件。