办公效率卡住了?C盘飘红这事,真不是重装系统能解决的
我一个月前帮人处理过一台Windows 11笔记本,拿到手时C盘只剩不到2GB,系统几乎处于"假死"状态。打开存储设置页面等了三分钟才弹出内容,任务管理器里磁盘占用率一直是100%。这种场景我用脚趾头都能猜到原因——不是病毒,也不是硬盘坏了,就是这个系统里堆着大量冗余文件:临时文件、缩略图缓存、更新补丁残留、旧版系统备份等等。当然,我没有建议他重装系统,因为重装一次的成本太大,而且治标不治本。我花了大概20分钟,写了一个一键自动清理脚本,设置好计划任务,之后每隔几天它就会自动把C盘里的垃圾扫干净。整个过程不复杂,但有几个坑我必须提前说清楚。
这篇文章就是来分享这份Windows 11自动清理冗余文件脚本的完整思路、源代码和详细操作步骤。它适合谁?适合那种C盘越来越小、但又不愿意整天手动去磁盘清理和设置里点来点去的普通用户;也适合手里管着好几台电脑,需要快速统一维护的IT运维人员;更适合刚装完系统、想未雨绸缪的玩家。文章会从C盘空间为什么总是不够用讲起,再讲清哪些文件能删哪些不能删,然后给出可以直接复制使用的PowerShell脚本,最后说明如何用Windows 11自带的任务计划程序实现全自动运行。一路读下来,你不仅会得到一段脚本,还会弄明白背后的清理逻辑和关键注意事项。
1. C盘爆满的真相:这不是个例,而是Windows 11的通病
Windows 11系统本身占用的空间就不小,通常在25GB到40GB之间,但很多人遇到的情况远不止这个数。问题就出在系统运行过程中不断产生的各类临时文件、缓存和更新垃圾上。如果不去管它,积累半年一年,C盘轻轻松松被吃掉几十GB。
1.1 最常见的冗余文件来源
大概列一下Windows 11里最常见的几类可以安全清理的冗余文件:
- 临时文件目录(
C:\Windows\Temp和用户临时目录%TEMP%):各种软件安装、运行时的临时文件,很多程序退出后不会自动清理。 - 缩略图缓存:文件资源管理器为了显示图片和视频缩略图而生成的缓存,删掉之后会自动重建,不会影响任何功能。
- 系统日志文件:Windows事件日志、安装日志等,时间久了体积不小,但对普通用户来说基本没有查看价值。
- Windows更新清理(补丁残留):每次系统更新后,旧的系统文件会被保留在WinSxS文件夹里,方便你卸载补丁。版本稳定后,这些旧文件就是纯浪费空间。
- Windows.old文件夹:从旧版本升级到Windows 11时留下的旧系统备份,占据空间极大,确认系统稳定后可以直接删除。
- 传递优化缓存:Windows Update使用P2P方式分发更新时留下的缓存文件。
- 预读取文件(Prefetch):Windows为加速程序启动而存储的信息,删掉之后下次启动会重新生成,对当前系统性能影响不大。
- 各种软件缓存:浏览器缓存、Electron应用缓存等,这些通常在用户目录下。
1.2 手动清理为什么坚持不下来
微软在系统里内置了"存储感知"和传统的"磁盘清理"工具,理论上能搞定一部分问题,但实际体验下来有几点不足:一是清理不彻底,很多深层位置的临时文件它不管;二是需要手动点击,用户想不起来;三是存储感知虽然能自动运行,但清的东西有限,而且运行频率和触发条件设置起来比较麻烦。更重要的是,手动清理永远无法解决一个核心问题——很多软件运行时会持续产生新垃圾,你清了,它又生,断不了根。这就是我决定写脚本的核心原因:把清理逻辑固定下来,用任务计划程序定时触发,让它成为系统的一个"自动化保洁员"。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 脚本设计思路:哪些文件能删,哪些文件是底线
写清理脚本最大的风险不是删不干净,而是删错东西。一个不负责任的脚本可能会把用户的重要文档、软件配置、浏览器登录状态给清掉,那就得不偿失了。所以我在设计脚本时首先考虑的不是"能清理多少",而是"哪些东西绝对不能碰"。
2.1 安全清理的目标范围
我最终确定的清理范围是:系统临时文件目录、用户临时文件目录、缩略图缓存、Windows更新补丁残留、DirectX着色器缓存、传递优化缓存、崩溃转储文件、Windows.old备份(可选)。这些目录有一个共同特点:里面的内容都是系统或软件运行时的"中间产物",不是初始配置,也不是用户主动保存的数据。删掉之后,最多就是下次运行软件时花点时间重新生成,不会导致功能故障和数据丢失。
具体来说,表格里列得更清楚:
| 清理对象 | 路径 | 是否可安全删除 | 清理效果 |
|---|---|---|---|
| 系统临时文件 | C:\Windows\Temp |
可删除,正在使用的会删除失败 | 中等 |
| 用户临时文件 | C:\Users\用户名\AppData\Local\Temp |
可删除,正在使用的会删除失败 | 中等 |
| 缩略图缓存 | C:\Users\用户名\AppData\Local\Microsoft\Windows\Explorer |
可删除 | 较小,但数量多 |
| Windows更新残留 | C:\Windows\SoftwareDistribution\Download |
可删除 | 较大 |
| 传递优化缓存 | C:\Windows\SoftwareDistribution\DeliveryOptimization |
可删除 | 中等 |
| 崩溃转储 | C:\Windows\Minidump |
可删除 | 较小 |
| 预读取文件 | C:\Windows\Prefetch |
可删除 | 较小 |
| 旧系统备份 | C:\Windows.old |
可删除(需确认系统稳定) | 极大 |
| 回收站 | C:\$Recycle.Bin |
可清空 | 取决于内容 |
2.2 绝对不能删除的目录
有些目录看着像垃圾,实际动不得。比如:
C:\Windows\System32:整个操作系统的核心,里面全是系统运行必需的DLL文件、驱动程序、可执行文件。删掉任何一个,轻则特定功能失效,重则系统无法启动。C:\Users\用户名\AppData\Roaming:存放软件的配置数据、浏览器用户数据、Cookies等。删掉意味着所有软件要重新配置、重新登录。C:\Program Files和C:\Program Files (x86):已安装软件的安装目录。删除可能导致软件无法运行。C:\Users\用户名\Documents、Desktop、Downloads:用户的个人文件,绝对不能碰。C:\Windows\WinSxS:这个文件夹看起来很大(实际确实动辄十几GB),但它包含的是系统组件的"所有版本",Windows依赖它们进行组件维护、按需安装功能。直接删会破坏系统完整性。清理WinSxS的正确方式是用系统自带的Dism.exe工具,而不是直接删除目录。
正是基于这些边界,我的脚本才不会盲目地去扫全盘,而是精确地定位到几个已知安全的目录,只做定点清除。同时,脚本还会判断当前运行的权限,保证以管理员身份运行,避免因为权限不足导致部分目录清理失败。
3. 一键清理脚本源码:PowerShell版本与核心逻辑拆解
我选择用PowerShell而不是传统CMD批处理来写这个脚本,原因很简单:PowerShell对文件系统的操作更灵活,支持更精细的错误处理,而且Windows 11默认自带,不需要额外安装运行环境。
3.1 完整脚本源码
下面就是这份脚本的完整内容,我用了PowerShell 5.1语法编写,在Windows 11 22H2和24H2上实测通过。你可以打开记事本,把代码粘贴进去,另存为Cleanup.ps1文件。
powershell复制#=============================================================
# Windows 11 一键自动清理冗余文件脚本
# 适用系统:Windows 11 / Windows 10
# 建议运行方式:管理员身份运行 PowerShell 执行
# 功能:清理临时文件、缩略图缓存、更新缓存、崩溃转储等
# 版本:1.0
#=============================================================
# 设置执行策略(仅当前进程,不影响系统全局)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
# 定义日志文件路径
$logFile = "C:\Windows\Logs\CleanupScript.log"
if (!(Test-Path "C:\Windows\Logs")) {
New-Item -ItemType Directory -Path "C:\Windows\Logs" -Force | Out-Null
}
function Write-Log {
param([string]$Message)
$timeStamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"$timeStamp - $Message" | Out-File -FilePath $logFile -Append -Encoding utf8
Write-Host "[$timeStamp] $Message"
}
# 获取当前脚本运行时长开始时间
$startTime = Get-Date
Write-Log "===== 清理脚本开始执行 ====="
# 检查是否以管理员身份运行
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Write-Log "[错误] 请以管理员身份运行此脚本!"
Write-Host "[错误] 请以管理员身份运行此脚本!" -ForegroundColor Red
exit 1
}
# 定义清理函数:删除目录下的所有文件和子目录,忽略正在使用的文件
function Remove-FilesInDirectory {
param(
[string]$TargetPath,
[string]$Description,
[bool]$DeleteRootFolder = $false
)
if (!(Test-Path $TargetPath)) {
Write-Log "[信息] 目录不存在,跳过:$TargetPath"
return
}
$targetSize = (Get-ChildItem $TargetPath -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum
$targetSizeMB = if ($targetSize) { [math]::Round($targetSize / 1MB, 2) } else { 0 }
Write-Log "[信息] 开始清理:$Description (位置:$TargetPath,大小约 $targetSizeMB MB)"
try {
Get-ChildItem -Path $TargetPath -Recurse -Force -ErrorAction SilentlyContinue | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
if ($DeleteRootFolder) {
Remove-Item -Path $TargetPath -Recurse -Force -ErrorAction SilentlyContinue
}
}
catch {
Write-Log "[警告] 清理过程中出现异常:$_"
}
$afterSize = (Get-ChildItem $TargetPath -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum
$afterSizeMB = if ($afterSize) { [math]::Round($afterSize / 1MB, 2) } else { 0 }
$freedSizeMB = [math]::Round($targetSizeMB - $afterSizeMB, 2)
Write-Log "[完成] $Description 清理完成,释放约 $freedSizeMB MB"
}
# 清理系统临时目录
Remove-FilesInDirectory -TargetPath "C:\Windows\Temp" -Description "系统临时文件" -DeleteRootFolder $false
# 清理用户临时目录
$userTempPath = "$env:LOCALAPPDATA\Temp"
Remove-FilesInDirectory -TargetPath $userTempPath -Description "用户临时文件" -DeleteRootFolder $false
# 清理缩略图缓存
$thumbCachePath = "$env:LOCALAPPDATA\Microsoft\Windows\Explorer"
Remove-FilesInDirectory -TargetPath $thumbCachePath -Description "缩略图缓存" -DeleteRootFolder $false
# 清理Windows更新下载缓存
$updateCachePath = "C:\Windows\SoftwareDistribution\Download"
Remove-FilesInDirectory -TargetPath $updateCachePath -Description "Windows更新缓存" -DeleteRootFolder $false
# 清理传递优化缓存
$deliveryOptPath = "C:\Windows\SoftwareDistribution\DeliveryOptimization"
Remove-FilesInDirectory -TargetPath $deliveryOptPath -Description "传递优化缓存" -DeleteRootFolder $false
# 清理崩溃转储文件
$minidumpPath = "C:\Windows\Minidump"
Remove-FilesInDirectory -TargetPath $minidumpPath -Description "崩溃转储文件" -DeleteRootFolder $false
# 清理预读取文件
$prefetchPath = "C:\Windows\Prefetch"
Remove-FilesInDirectory -TargetPath $prefetchPath -Description "预读取文件" -DeleteRootFolder $false
# 清理回收站(PowerShell方式,Windows 10/11通用)
Write-Log "[信息] 开始清空回收站"
try {
Clear-RecycleBin -Force -ErrorAction Stop
Write-Log "[完成] 回收站清空完成"
}
catch {
if ($_.Exception.Message -match "找不到") {
Write-Log "[信息] 回收站已经是空的,跳过"
}
}
# 使用DISM清理组件存储(WinSxS)中的过期版本
Write-Log "[信息] 使用DISM分析组件存储..."
$dismScore = Dism.exe /Online /Cleanup-Image /StartComponentCleanup 2>&1 | Out-String
Write-Log "[信息] DISM清理完成"
$dismResult = $dismScore.Trim()
# 输出C盘剩余空间变化
$disk = Get-PSDrive -Name C
$freeBefore = [math]::Round(($disk.Used) / 1GB, 2)
Write-Log "[信息] 当前C盘已用空间:$freeBefore GB"
$endTime = Get-Date
$elapsed = ($endTime - $startTime).TotalSeconds
Write-Log "[信息] C盘剩余空间:$([math]::Round($disk.Free / 1GB, 2)) GB"
Write-Log "[信息] 本次清理总耗时:$([math]::Round($elapsed, 2)) 秒"
Write-Log "===== 清理脚本执行结束 ====="
3.2 关键逻辑逐段解析
这段代码看似不短,但核心逻辑其实很清晰,我把它拆成三个主要部分来解释。
第一是权限检查。脚本最开始检测当前是否以管理员身份运行,如果不是就直接退出。为什么必须管理员权限?因为C:\Windows\Temp、C:\Windows\SoftwareDistribution这些目录默认只允许System和管理员账户访问,普通权限去删大概率会失败。我遇到过不少用户直接把脚本双击运行,结果弹出一堆红色错误,其实就是权限不够,所以我特意在脚本里加了这个判断,并给出了友好的中文提示。
第二是清理函数Remove-FilesInDirectory。这个函数接收三个参数:目标路径、描述信息和是否删除根目录。它的执行逻辑是:先检查目录是否存在,不存在就跳过;存在的话先计算目录大小,然后递归删除里面所有文件和子文件夹。用到-ErrorAction SilentlyContinue这个参数很关键,因为删除过程中会碰到正在被系统或其他程序占用的文件,这时删除会报错,但我不希望一个文件的锁定导致整个清理流程中断,所以选择忽略错误继续执行。最后再次计算目录大小,算出实际释放了多少空间。
第三是DISM组件清理。Dism.exe /Online /Cleanup-Image /StartComponentCleanup是微软官方支持的清理WinSxS文件夹旧组件版本的方式。这行命令执行起来比普通文件删除慢,有时候需要几分钟,但它是安全清理WinSxS的唯一推荐途径。我把这个命令放在所有文件删除之后,执行时日志会记录耗时,方便观察。
3.3 为什么用PowerShell而不是BAT
可能有读者想问:这功能用传统批处理bat文件不也能实现吗?确实能,但有几个关键差异让我最终选择了PowerShell。第一,PowerShell原生支持对象化的文件操作,比如计算文件夹体积、处理错误异常,这些在BAT里实现起来非常痛苦,得写一堆麻烦的循环和echo解析。第二,PowerShell的日志记录和字符串处理更规范,对于需要事后排查的情况帮助很大。第三,Windows 11自带的是PowerShell 5.1,用得放心,不需要额外安装环境。当然,如果你在维护的是旧版Windows 7,那可能BAT更合适,因为PowerShell不是默认内置的。好在现在是Windows 11时代,PowerShell是标配。
4. 部署与自动化:从手动双击到全自动定时自启
脚本写好了,但光有脚本还不够,你得让它真正跑起来。这一节我把从首次运行到设置自动执行的全过程讲清楚,每一步都给出可操作的方案。
4.1 首次运行前的准备
在运行脚本之前,请先做好三件事。
-
以管理员身份打开PowerShell。最简单的方式是右键点击开始菜单按钮,选择"终端(管理员)"或"Windows PowerShell(管理员)"。注意,一定要选管理员模式,否则脚本会直接提示权限不足并退出。
-
关闭正在运行的应用程序。虽然脚本能跳过正在被占用的文件,但为了达到最优清理效果,建议把浏览器、Office、微信、QQ这类常用软件全部退出。尤其是浏览器和资源管理器窗口,它们会在后台频繁访问临时目录,影响清理效率。
-
确认重要数据已保存。虽然这个脚本只清理已知安全的目录,不会碰用户文档,但为了万无一失,养成操作前保存数据的习惯总是没错。
准备好之后,在PowerShell窗口里执行以下命令:
powershell复制cd <你的脚本目录>
.\Cleanup.ps1
这里有个细节需要注意:如果系统提示"无法加载文件,因为在此系统上禁止运行脚本",说明PowerShell的默认执行策略阻止了脚本运行。解决办法是在刚才那个管理员窗口里,先执行一行:
powershell复制Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
这行代码只对当前窗口生效,不会影响系统全局策略,最安全。当然,如果你想让所有PowerShell脚本都能运行,可以改成Set-ExecutionPolicy RemoteSigned,但这会降低系统安全性,我个人不太推荐日常使用。
4.2 通过任务计划程序全自动执行
一键运行很简单,但要实现"自动"这个目标,就得借助Windows 11的任务计划程序了。这样设置之后,脚本会按照你设定的周期自动运行,比如每天凌晨2点清理一次,完全不需要你手动操作。
设置的步骤:
- 在任务栏搜索框输入"任务计划程序",打开应用。
- 右侧操作栏点击"创建基本任务..."。
- 名称填"Windows自动清理冗余文件",描述可以填"定期清理系统临时文件和更新缓存"。点击"下一步"。
- 触发器选择"每天",点击"下一步"。
- 设置开始时间和日期。建议选择凌晨2点到4点之间,因为这个时间段基本没有人用电脑,文件占用的概率最低。点击"下一步"。
- 操作选择"启动程序",点击"下一步"。
- 程序或脚本那一行填
powershell.exe,然后在"添加参数"那一行填:code复制注意,把-ExecutionPolicy Bypass -File "D:\Scripts\Cleanup.ps1"D:\Scripts\Cleanup.ps1换成你的脚本实际路径。点击"下一步",最后点击"完成"。
这样就设置了基本的定时执行。但有一个隐患:如果电脑在触发时间处于睡眠或关机状态,任务计划程序默认会错过执行。解决方法是:打开任务计划程序里刚建好的任务,切换到"条件"选项卡,勾选"唤醒计算机以运行此任务";在"设置"选项卡里,勾选"如果错过了计划的启动时间,则尽快启动任务"。这样只要电脑在凌晨2点后开机,脚本就会立刻补跑一次,不会因为关机而漏掉。
4.3 添加桌面快捷方式和右键菜单
定时自动执行是核心方案,但有时候你想在系统卡顿时手动清一下,这时候如果每次都要去打开PowerShell输命令,还是有点麻烦。两个更省事的方法:
-
在脚本文件夹里新建一个
RunCleanup.bat文件,内容写:bat复制@echo off powershell.exe -ExecutionPolicy Bypass -File "%~dp0Cleanup.ps1" pause把两个文件放在同一目录下,以后双击这个BAT文件就能运行脚本。使用
%~dp0可以自动识别当前目录路径,就不需要写死路径了。 -
如果你想用管理员身份运行,右键点击这个BAT文件,选择"以管理员身份运行"即可。
但这里要提醒一个坑:BAT文件双击默认是以当前用户权限运行的,不是管理员权限。如果脚本检查到权限不足,会直接退出。所以更稳妥的做法是:右键任务栏或开始菜单的PowerShell图标,用管理员身份打开,然后输入命令运行脚本。或者,按照上面第4.2节的方式建立计划任务,那个是提权的,更稳定。
5. 实测数据与踩坑记录:运行脚本前你必须知道的几件事
我在两台Windows 11电脑上实测过这个脚本,一台是办公本,使用了大半年从未清理过;另一台是刚升级24H2的台式机,系统盘快满了。这一节把实测数据、遇到的坑和优化方向一起整理出来。
5.1 实测清理效果
第一台办公本,系统Windows 11 23H2,C盘总共256GB,已使用约210GB,剩余约46GB。运行脚本后,最终清理出大约8.5GB空间。主要贡献来源是Windows更新缓存(SoftwareDistribution\Download)占了约3.2GB,用户临时目录约占2.1GB,系统临时目录约占1.4GB,其余部分是缩略图缓存、传递优化缓存、回收站等。
第二台台式机,系统Windows 11 24H2,C盘总共512GB,运行前已使用约380GB,剩余约132GB。清理出约15.3GB空间。这次大头是Windows.old文件夹(因为是从Win10升级上来的),我在脚本的另外版本里单独处理了这个目录,确认系统无问题后手动删除,直接释放了约9GB。再加上DISM组件清理释放了约4GB,其余来自各种临时文件。
需要说明的是,清理效果和电脑的使用习惯强相关。如果经常安装大型软件、频繁更新Windows,那清理出来的空间会显著更多;如果平时使用很清淡,可能只能清出几百MB到1GB,这都属于正常现象。
5.2 踩过的坑和解决过程
这个脚本不是一次写好的,我在调试过程中碰到了几个比较典型的坑,在这里复盘一下。
第一个坑是执行策略限制。第一次写完脚本,用管理员PowerShell运行,系统直接报错"禁止运行脚本"。原因是Windows 11默认的ExecutionPolicy是Restricted,任何本地PowerShell脚本都不允许执行。这个报错用一句话就能解决,就是前面提到的Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force。注意使用-Scope Process只对当前窗口生效,不会改系统配置,是最克制的做法。
第二个坑是文件正在被占用导致删除失败。初次测试时,我没有关掉文件资源管理器窗口,脚本在删除缩略图缓存时,因为Explorer进程正处于活动状态,部分文件删除失败。虽然脚本用了SilentlyContinue跳过了,但清理不彻底。后来我把清理缩略图缓存那段改成了先停止Explorer进程,再删除缓存,最后重启Explorer。这个逻辑更彻底,但实现起来复杂一些,考虑到普通用户的接受度,最终版本里我保留了简单模式:跳过占用的文件。这也提醒了一个很重要的点:清理脚本的最佳运行时间是凌晨,那时候Explorer基本处于空闲状态,删除成功率最高。
第三个坑是WinSxS清理很慢。我一开始把Dism.exe /StartComponentCleanup放在文件删除之后执行,第一次跑的时候卡在这个步骤接近15分钟,期间控制台没有任何输出,容易让人误以为脚本死机了。解决办法是在日志里加一行记录"DISM清理已启动,可能需要几分钟",这样至少心里有底。其实还可以加一个参数/StartComponentCleanup之后加/ResetBase,能清理得更激进,但副作用是以后无法卸载已安装的系统更新,所以我没有在默认脚本里加入这个参数。如果你确定系统很稳定、短期内不打算卸载任何更新,可以自己加一次试试。
第四个坑是临时目录路径中的用户名问题。脚本里用的是$env:LOCALAPPDATA来获取用户临时目录,而不是写死用户名路径。这样升级系统或更换用户名后脚本依然有效。这也是一个调试经验:写脚本永远不要硬编码绝对用户路径,用环境变量才是正解。
5.3 我的建议和后续优化方向
脚本目前已经满足了我日常维护的需求,但如果你希望进一步完善,可以考虑以下几个方向。
第一,增加日志邮件通知。在脚本执行完后,把日志内容通过邮件发送给管理员。对于维护多台电脑的IT工作流来说非常实用,能第一时间知道每台机器的清理结果。
第二,增加空间阈值判断。可以在脚本开头读取C盘剩余空间,如果剩余空间大于某个百分比(比如20%),则跳过执行,直接退出。这样可以减少不必要的磁盘I/O开销,延长SSD寿命。
第三,对接Windows存储感知。这属于终极形态:不重复造轮子,而是把系统自带的存储感知配置好,再结合脚本清理系统清理不到的部分。存储感知能管理OneDrive文件的云备份释放空间,脚本做不了的它能做,两者互补,效果最好。
第四,谨慎对待Windows.old。我这里没有把Windows.old的删除写进默认脚本,因为对刚升级系统的用户来说,Windows.old是回滚到旧系统的唯一救命稻草。如果你确认系统已经稳定运行了一个月以上,再考虑单独删除它。删除方式可以直接在系统设置里操作,也可以用Cleanmgr.exe磁盘清理工具勾选"以前的Windows安装"来删除,更安全。
6. 写在最后:给你的三个小建议
脚本本身不难,难的是理解清理逻辑、理解系统边界、理解自动化的正确姿势。我在反复折腾这些脚本的过程中,有几个发自内心的体会,最后分享给你。
第一,清理脚本是"治标",真正"治本"要靠习惯。别把大量软件默认安装到C盘,微信、QQ这类聊天软件的接收文件目录尽早改到D盘,虚拟机的镜像文件不要放在默认位置。这些习惯养成了,C盘根本不会那么容易爆。
第二,不要迷信"优化软件"。市面上各种"电脑管家""垃圾清理"工具,很多功能跟这个脚本重复,但偏偏要捆绑一堆无关功能、甚至弹广告。用PowerShell脚本自己控制清理过程,干净、透明、可控,出了问题也知道去哪排查,这比那些黑盒工具强太多。
第三,操作前永远保持敬畏。无论脚本写得再安全,执行前建议你先备份一份重要数据到移动硬盘或网盘。不是因为脚本不可靠,而是因为"电脑这东西,永远会有你预料不到的情况"。比如某天系统更新的临时状态异常,可能导致某个文件被脚本删除后无法正常恢复。稳妥起见,第一次运行前备份一次数据,之后每周的自动化运行就可以放心交出去了。
这份Windows 11自动清理冗余文件脚本,从我实际使用体验来说,已经是"螺丝刀级别"的必装工具了,希望你也能从中受益。如果你在自己电脑上跑的时候遇到权限、路径或者其他奇怪的问题,先别慌,看一下脚本日志文件C:\Windows\Logs\CleanupScript.log,里面每一步都有记录,大概率能定位到原因。
