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

相关推荐
阿洛学长2 小时前
OpenClaw零成本部署指南:Windows/Mac/Linux/阿里云搭建+两个免费大模型API配置攻略
linux·windows·macos
busy dog~乌鸦~2 小时前
【THM-课程内容&答案】:Web Hacking Fundamentals-Upload Vulnerabilities-Filtering
安全·web安全·安全性测试
嵌入式Q2 小时前
FreeRTOS源码解析(2)任务调度器挂起与恢复
windows
三品吉他手会点灯2 小时前
C语言学习笔记 - 17.C编程预备计算机专业知识 - 数据类型
c语言·笔记·学习
handler012 小时前
【Linux 笔记】GDB 调试速查手册
linux·运维·c语言·c++·笔记
byoass2 小时前
文件版本管理的设计与实现:解决协同编辑丢数据的核心方案
前端·javascript·网络·数据库·安全·云计算
汽车仪器仪表相关领域2 小时前
Kvaser Memorator Pro 2xHS v2:双通道CAN FD智能记录仪,赋能华南汽车与工业总线测试升级
大数据·人工智能·功能测试·安全·汽车·压力测试·可用性测试
wanhengidc2 小时前
小带宽服务器都有哪些用途
运维·服务器·网络·安全·智能手机
飘飘叶2 小时前
[FRP]Windows 安装 frpc 客户端,以及P2P方式ssh配置
windows·frp