Windows C 盘空间告急?用 PowerShell 写一个安全可控的清理脚本

一、为什么 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 组件存储缓存。对于日常电脑维护来说,这个脚本已经能覆盖大部分安全清理场景。执行完成后,建议重启一次电脑,让系统释放仍被占用的缓存文件。

相关推荐
Bruce_Liuxiaowei2 分钟前
内网“影子资产“:串口服务器安全盲区剖析
服务器·网络·安全·iot
殷色玫瑰11 分钟前
C++ STL:map 与 set 详解——从底层红黑树到实际应用
c语言·数据结构·c++·算法·visualstudio·rpc
Quanqiucard17 分钟前
矿山安全管控升级,布控球机物联网卡成视频稳定回传关键
物联网·安全
看浪的路人38 分钟前
第8讲:供应链安全与依赖管理
安全
云计算练习生1 小时前
什么是操作系统安全?身份认证、访问控制与审计机
服务器·网络·安全·访问控制·操作系统安全
深盾科技_Virbox1 小时前
云端与本地并行交付,软件许可管理如何实现统一运营?
java·大数据·开发语言·安全
LONGZETECH2 小时前
新能源技术实训难题破解:纯电动汽车五大核心系统三维仿真解决方案
大数据·c语言·人工智能·安全·汽车
郭庆汝2 小时前
windows本地部署AgentDesk
windows
笨笨D幸福2 小时前
win11 vhdx/wtg 安装出现问题,提示 Windows 安装程序无法将 Windows 配置为在此计算机的硬件上运行
windows
byte轻骑兵3 小时前
【HOGP】规范精讲[7]: BLE人机交互的安全防线——HOGP安全规范全解析与落地指南
安全·计算机外设·人机交互·蓝牙·hogp