C盘又红了?我先跟你聊几句实在的。
干过运维或者经常帮人修电脑的应该都有同感:C盘空间不足这个问题,十个用户里有八个会问,剩下两个已经在装各种“安全卫士”“清理大师”了。但实际上,那些所谓的电脑管家类软件,清理一轮下来确实能腾出几个GB,问题是它们自己也住在C盘里,装的时候占几百MB、用着用着缓存越来越大,广告弹窗越来越多,甚至还会给你装全家桶。你清的那点空间,还没它自己占的多。
所以我一直的建议都是:C盘清理这件事,自己写一个bat脚本就够了。学习成本低、逻辑完全透明、想清哪里清哪里,没有任何后台驻留,也不需要付费订阅。你只要把常用的清理命令整理成一套固定的流程,保存成一个.bat文件,以后C盘满了就右键管理员运行一次,三分钟搞定。
这篇文章我就把整套思路和完整脚本给你。不只是贴代码,还会讲清楚每条命令背后的原理,以及哪些目录我实测过能放心删、哪些目录删了会出事,还有怎么让脚本全自动跑、怎么加一个删除日志方便回溯。适合完全没接触过批处理的小白,也适合想把手里的脚本整理得更规范的老手。
1. 为什么我推荐自己写脚本而不是接着装缓存清理工具
先聊一个很多人没想明白的问题:那些缓存清理工具到底删的是什么?原理其实非常简单,无非就是把Windows和常用软件存放在固定位置的临时文件删掉、把更新缓存清掉、把回收站倒空。这些操作用Windows自带命令也能做,而且做得只会更干净。
1.1 清理软件的盈利模式决定了它不能太“干净”
这个话说得有点直,但你细想一下:一个完全免费的清理工具,它的商业逻辑是什么?要么是内置推广位,要么是把你导向自家的浏览器、输入法、管家全套产品,要么是在清理结果页里夹杂各种“优化”按钮。它靠这些功能赚钱,这就意味着它的设计目标从来就不是“把这个目录清到最彻底”,而是“让你愿意长期打开它”。所以你会发现一个很魔幻的现象:清理工具的缓存越做越大,每次开机都要加载后台服务,它本身就在持续挤占你的C盘。
自己写bat脚本就没这个问题。脚本不会常驻内存,不会开机自启,不会偷偷下载东西,更不会弹窗。它就是一个几十行的文本文件,双击运行、执行完就退出,整个过程完完全全在你掌控之中。
1.2 bat脚本清理的本质是一连串Windows标准命令
从技术底层来说,bat脚本里干的活就是通过cmd.exe调用Windows自带的命令工具,把特定目录下的文件删掉。比如del、rd这类命令,系统自带、免费、无残留,只要你给的路径是对的,执行效率和清理效果绝不会比商业软件差。
我见过很多用户对“写脚本”这件事有畏难情绪,觉得这是程序员才能干的活。其实bat批处理是门槛最低的一种脚本语言了,它不需要装任何开发环境,Windows自带的记事本就能写,双击就能跑。它的语法本质就是“你在命令行里会敲什么命令,就把它一条一条写进文本文件里”,仅此而已。
1.3 自己写脚本最大的隐性优势:你知道它到底干了什么
商业软件给你一个按钮,你不会知道它具体删了哪些文件、改了什么注册表。但自己做脚本就不一样,每一条命令都是白纸黑字写在那里的,你可以逐行审视,也可以精简修改。这不只是安全性的问题,更是一种掌控感:你对自己电脑上进行的每一次操作,心里有数。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手之前先摸清C盘底细:哪些目录动了才安全
写清理脚本最怕的就是乱删。Windows系统的目录结构是有逻辑的,有些文件夹是系统运行的核心,绝对不能碰;有些文件夹虽然看着像垃圾,但里面也有正在被占用的文件,需要做容错处理。我先把C盘上最常见的几个可安全清理的目录梳理一遍。
2.1 用户级临时目录:最大的垃圾集散地
路径:C:\Users\<你的用户名>\AppData\Local\Temp
这个目录是当前用户运行软件时产生的临时文件堆放处,几乎所有的安装包解压、运行缓存、软件升级残留都会往这里写。时间一长,这里面的文件数量轻轻松松上万,大小动辄几个GB。
删除方式:进入目录后Ctrl+A全选、删除。有些文件会提示正在使用中无法删除,直接跳过即可。脚本里的实现就是用del加rd配合2>nul来忽略错误提示。
2.2 Windows系统级临时目录
路径:C:\Windows\Temp
系统组件和部分驱动在运行过程中产生的临时文件存放位置,和用户级Temp类似,也是清理重点。这个目录的文件通常权限要求更高,需要在管理员权限下才能删得动。
2.3 Windows更新缓存目录
路径:C:\Windows\SoftwareDistribution\Download
Windows Update下载的更新安装包缓冲就放在这里。成功安装完更新之后,这些安装包其实已经没有用了,但Windows不会主动帮你删掉,日积月累也是十几个GB的大块头。
需要注意一点:删除这个目录的前提是当前没有正在进行的系统更新。你可以先暂停Windows Update服务再删,脚本里我习惯用net stop wuauserv先停掉服务,删完再启动。这样最稳妥。
2.4 缩略图缓存和图标缓存
路径:C:\Users\<你的用户名>\AppData\Local\Microsoft\Windows\Explorer
这个目录下带thumbcache_*.db后缀的文件,是资源管理器为图片、视频生成的缩略图缓存。你在文件夹里看过的图片视频越多,这里的文件就越大。删除后唯一的“副作用”是下次打开图片文件夹时缩略图需要重新加载,会稍微慢一次,但之后又恢复正常。
2.5 回收站、错误报告、崩溃转储
这三类内容占了C盘很大空间但常常被忽略。回收站不用说,右键清空即可。Windows错误报告(WER)和崩溃转储文件存放在C:\ProgramData\Microsoft\Windows\WER以及C:\Windows\Minidump下面,对于普通用户来说几乎没有价值,删掉完全不影响系统。
2.6 绝对不能碰的区域
写清理脚本之前,有些红线必须先画清楚,免得误删搞崩系统:
C:\Windows\System32和C:\Windows\SysWOW64:系统核心运行库,删里面任何文件都可能导致系统崩溃。C:\Program Files和C:\Program Files (x86):已安装软件的根目录,脚本不应该去扫描或删除这里面的文件。C:\Users\<你的用户名>\AppData\Local\Temp以外的AppData子目录:很多软件把配置和用户数据也放在AppData里,不能一刀切地清理。C:\System Volume Information:系统还原点存储区,受系统保护,直接删也删不掉,强行处理可能损坏系统还原。
3. 脚本的分层设计:从临时文件到系统更新的完整清理链路
理论说完了,下面给出完整可用的脚本。我把它设计成了模块化结构,每一段负责一类清理任务,并加了日志记录功能。你不需要完全理解每一行,但我会在代码后面解释关键部分,方便你按需增删。
3.1 完整脚本代码
bat复制@echo off
setlocal enabledelayedexpansion
:: ==================================================
:: C盘清理脚本 - 按需调整
:: 必须以管理员身份运行
:: 日志路径:C:\C_Clean_Log\
:: ==================================================
:: 创建日志目录(如果不存在)
set "LogDir=C:\C_Clean_Log"
if not exist "%LogDir%" mkdir "%LogDir%"
:: 生成时间戳
for /f "tokens=1-2 delims=/" %%a in ('date /t') do set "date_part=%%a%%b"
for /f "tokens=1-2 delims=:" %%a in ('time /t') do set "time_part=%%a%%b"
set "LogFile=%LogDir%\clean_%date_part%_%time_part%.log"
echo ================================================ >> "%LogFile%"
echo 清理开始:%date% %time% >> "%LogFile%"
echo ================================================ >> "%LogFile%"
:: ------------------------------------------------
:: 1. 用户临时目录(Temp)
:: ------------------------------------------------
echo [1/6] 正在清理用户临时目录...
echo [1/6] 用户临时目录 >> "%LogFile%"
set "UserTemp=%TEMP%"
if exist "%UserTemp%\*" (
del /f /s /q "%UserTemp%\*" >nul 2>&1
for /d %%i in ("%UserTemp%\*") do rd /s /q "%%i" 2>nul
)
:: ------------------------------------------------
:: 2. 系统临时目录(Windows\Temp)
:: ------------------------------------------------
echo [2/6] 正在清理系统临时目录...
echo [2/6] 系统临时目录 >> "%LogFile%"
if exist "C:\Windows\Temp\*" (
del /f /s /q "C:\Windows\Temp\*" >nul 2>&1
for /d %%i in ("C:\Windows\Temp\*") do rd /s /q "%%i" 2>nul
)
:: ------------------------------------------------
:: 3. Windows更新缓存(SoftwareDistribution)
:: ------------------------------------------------
echo [3/6] 正在清理Windows更新缓存...
echo [3/6] Windows更新缓存 >> "%LogFile%"
net stop wuauserv >nul 2>&1
if exist "C:\Windows\SoftwareDistribution\Download\*" (
del /f /s /q "C:\Windows\SoftwareDistribution\Download\*" >nul 2>&1
for /d %%i in ("C:\Windows\SoftwareDistribution\Download\*") do rd /s /q "%%i" 2>nul
)
net start wuauserv >nul 2>&1
:: ------------------------------------------------
:: 4. Explorer缩略图缓存
:: ------------------------------------------------
echo [4/6] 正在清理缩略图缓存...
echo [4/6] Explorer缩略图缓存 >> "%LogFile%"
if exist "%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache_*.db" (
del /f /s /q "%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache_*.db" >nul 2>&1
)
:: 重启资源管理器使图标缓存重建
taskkill /f /im explorer.exe >nul 2>&1
start explorer.exe >nul 2>&1
:: ------------------------------------------------
:: 5. 回收站
:: ------------------------------------------------
echo [5/6] 正在清空回收站...
echo [5/6] 回收站 >> "%LogFile%"
rd /s /q C:\$Recycle.Bin 2>nul
:: ------------------------------------------------
:: 6. 浏览器缓存(按需启用,可自行增减)
:: ------------------------------------------------
echo [6/6] 正在清理浏览器缓存...
echo [6/6] 浏览器缓存 >> "%LogFile%"
:: Chrome
if exist "%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache\*" (
del /f /s /q "%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache\*" >nul 2>&1
)
:: Edge(Chromium内核)
if exist "%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Cache\*" (
del /f /s /q "%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Cache\*" >nul 2>&1
)
:: ------------------------------------------------
:: 清理完成
:: ------------------------------------------------
echo.
echo ================================================ >> "%LogFile%"
echo 清理完成:%date% %time% >> "%LogFile%"
echo ================================================ >> "%LogFile%"
echo.
echo 清理完成!日志已保存至:%LogFile%
echo 如需查看清理明细,请打开上述日志文件。
pause
3.2 这套脚本设计里的几个关键细节
**关于2>nul:**很多初学bat的人会疑惑为什么删文件要加上这个。它的作用是把执行过程中的错误提示重定向到空设备,简单理解就是“屏蔽所有报错”。比如某些文件正在被系统锁定,删除失败时会报“另一个程序正在使用此文件”,如果不屏蔽,脚本运行时会刷出一大堆红色错误信息,看起来像出了大问题,实际上只是正常跳过。
关于for /d %%i ... rd /s /q:del /f /s /q只能删除文件,删不掉子文件夹。所以我在删除Temp目录时用了两步:先删文件,再用for /d循环配合rd /s /q把所有子目录整个删掉。这比单独用del或单独用rd都彻底。
**为什么删除更新缓存要先停服务:**Windows更新服务(wuauserv)可能在后台占用着SoftwareDistribution\Download目录里的文件,直接删会出现部分文件删不掉的情况。先net stop wuauserv停掉服务、删除完成后再net start wuauserv重启,这样能保证删除尽量完整。当然,如果net start启动失败(比如某些精简版系统禁用更新服务),也不用太在意,下次开机时Windows会自己把服务拉起来。
3.3 PowerShell版本:当bat不够用时的一个补充
如果你有一定基础,也可以试试用PowerShell脚本替代bat。PowerShell对文件操作的表达能力更强,比如你可以用一条命令就递归删除目录下所有文件,甚至可以用管道筛选删除最近一周的临时文件。但对于绝大多数普通用户来说,bat版本已经足够用了,PowerShell并不是必须的。我在下面提供一个简单的PowerShell等价脚本,供有需要的人参考:
powershell复制$logFile = "C:\C_Clean_Log\clean_power_" + (Get-Date -Format "yyyyMMdd_HHmmss") + ".log"
New-Item -ItemType Directory -Force -Path "C:\C_Clean_Log" | Out-Null
"==== 清理开始:$logFile ====" | Add-Content $logFile
# 清理用户临时目录
Get-ChildItem -Path $env:TEMP -Recurse -Force -ErrorAction SilentlyContinue | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
Add-Content $logFile "[1] 用户临时目录清理完成"
PowerShell的优势是可以精细控制“删除哪些文件、保留哪些文件”,但它的启动速度比bat慢,双击运行默认还会被安全策略拦一下,需要改执行策略或右键选择“使用PowerShell运行”。我的建议是:如果你只是想要一个一秒运行的清理工具,选bat足够;如果你打算把清理脚本做成一个复杂工具,比如带白名单、自动跳过指定文件夹,再考虑PowerShell。
4. 权限是绕不开的坎:管理员运行、开机自启与计划任务的正确姿势
脚本写好了,但很多人第一次双击运行时会发现,有些目录提示找不到或访问被拒绝。这不是脚本写错了,而是权限不够。
4.1 为什么bat必须用管理员身份运行
Windows的UAC(用户账户控制)机制把系统操作分成了两个级别:普通用户级别和管理员级别。清理C:\Windows\Temp、操作SoftwareDistribution这一类系统级目录,需要管理员权限才能读写。用普通权限运行bat,即使你把del命令写对了,系统也会默默拒绝访问,而你只能看到一堆令人抓狂的“拒绝访问”提示。
给bat文件添加管理员权限的最简单方法是右键 -> 以管理员身份运行。但如果你想双击就直接用管理员方式启动,可以给脚本开头加一段VBS提权代码,让脚本自动弹出UAC提权确认框。下面是完整的实现:
bat复制@echo off
:: 自动提权代码,检测到非管理员权限时调用VBS以管理员身份重启自身
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
)
:: ---------------------------
:: 以下才是真正的清理逻辑
:: ---------------------------
echo 现在已经是管理员权限
:: ... 这里粘贴上一节的清理代码 ...
这段的原理是:先用cacls.exe探测一下当前进程是否拥有管理员权限,如果没有,就临时生成一个VBS脚本调用ShellExecute以runas方式重新启动当前bat文件,这个动作会触发系统UAC弹窗,用户点“是”后脚本就以管理员身份重新执行。
4.2 如何让脚本定时自动运行
清理C盘这件事,最好养成规律执行的习惯,比如每周五下班前跑一次。如果不想每次手动点,可以用Windows计划任务实现定时自动运行。创建计划任务有图形界面和命令行两种方式,图形界面我就不多说了,重点讲一下命令行方式,因为可以写进一个“一键安装计划任务.bat”里,以后重装系统或者换电脑都能快速部署。
bat复制:: 一键注册计划任务:每周六早上10点自动运行清理脚本
schtasks /create /tn "WeeklyCleanC" /tr "C:\C_Clean\clean_c.bat" /sc weekly /d SAT /st 10:00 /ru SYSTEM /rl HIGHEST /f
解释几个参数的含义:
/tn "WeeklyCleanC":任务名称,你自己取。/tr "C:\C_Clean\clean_c.bat":要运行的脚本路径。/sc weekly /d SAT /st 10:00:每周周六10:00触发。/ru SYSTEM:以SYSTEM账户运行,SYSTEM账户的权限比管理员还高,可以避免脚本执行时因为用户没登录而失败。/rl HIGHEST:以最高权限级别运行。
用SYSTEM账户运行的好处是:即使当前没有任何用户登录,计划任务也能在后台执行清理。注意SYSTEM账户的环境变量和当前用户不同,如果在脚本里用到了%TEMP%或%LOCALAPPDATA%,指向的将是C:\Windows\System32\config\systemprofile\...这类路径,不是当前用户的路径。所以我更推荐用/ru 你的用户名 /rp 你的密码这种形式,让脚本以特定用户身份运行,这样环境变量路径才正确。如果你不想在命令行里明文写密码,也可以用/ru 你的用户名 /rp *,运行时再手动输入密码。
4.3 常见的“双击没反应”或“闪退”原因排查
有段时间我在帮一个朋友部署开机自动清理脚本,明明文件路径都写对了,计划任务也注册成功了,但每次运行日志都是空的。排查了一下发现是bat脚本里某个中文注释编码不对导致脚本中途崩了,命令提示符窗口一闪而过,根本看不到报错。
这个问题很典型。bat文件必须保存为ANSI编码,不能是UTF-8。如果代码里有中文且保存成了UTF-8,cmd解析时会把中文字节搞乱,轻则中文乱码,重则脚本直接终止。用记事本编辑bat时,保存类型一定要选“ANSI”,不要选UTF-8。
另外一个常见问题是:bat文件放在中文路径下,比如C:\用户\测试\清理.bat,某些Windows版本会对中文路径解析异常。最省心的做法是,把脚本放在一个纯英文路径下,比如C:\C_Clean\clean.bat,万一路径里有空格,调用时用双引号包住即可。
5. 实测效果与容易翻车的细节:删不掉的、误伤的、后悔的
脚本写完不是结束,真正要命的是运行完之后的检查。我自己在反复测试这套脚本的过程中,遇到过几个坑,现在讲出来供大家参考。
5.1 有些文件删不掉不是脚本的问题,是系统正在用
第一次跑完脚本,我发现日志虽然显示“清理完成”,但Temp目录里还剩了大概几百MB文件没删掉。当时以为是权限不够,于是提高权限再跑一次,还是删不掉。后来检查发现,这些文件是被后台服务(比如杀毒软件、系统更新助手、正在运行的浏览器)给锁住了。del命令无法删除正在被占用进程打开的文件,这是Windows的正常机制。
解决方案是什么?答案是不要跟它死磕。一个文件既然正在被某个进程占用,说明它可能还在服役,就算现在删了,进程也会重新创建它,反而拖慢系统。把能删的删掉、删不掉的留着,下次运行时再试,这是最合理的策略。如果你很在意这一点,可以先彻底关闭那些常驻后台的大型软件(浏览器、办公软件、Adobe全家桶),再运行清理脚本,占用锁会少很多。
5.2 清理缩略图缓存后资源管理器会自动重启
脚本第4步执行了taskkill /f /im explorer.exe来杀掉资源管理器进程,然后start explorer.exe重新拉起。这一步的目的是让资源管理器重新生成图标缓存,否则删完缩略图后,资源管理器还是保留旧的缩略图引用,看不到明显效果。
但这里有一个体验上的副作用:taskkill会强制关闭所有已打开的文件夹窗口。如果你正开着资源管理器窗口、在看某个目录,运行完脚本后这些窗口都会关闭。所以如果脚本是手动运行的,建议先保存好手头用到的文件路径;如果是计划任务在后台运行的,影响不大,用户只会在任务栏看到资源管理器闪了一下。
5.3 别随便把del的范围扩大到“看起来没用的文件”
很多网上的清理教程会教你删除C:\Windows\Installer目录下的文件,说是能释放好几个GB。这个操作风险极高,我强烈不建议写进自动清理脚本里。Installer目录保存的是MSI安装程序的缓存数据,很多软件的卸载、修复、安装补丁都要依赖它。删了之后,那些软件可能再也无法正常卸载或升级,甚至某些杀毒软件和安全组件会报错。这种为了腾几个GB就牺牲系统稳定性的做法,不值当。
类似需要避开的目录还有:
| 目录 | 为什么不能碰 |
|---|---|
C:\Windows\WinSxS |
系统组件存储库,删了会导致组件损坏,更新失败 |
C:\Windows\assembly |
.NET运行时缓存,强行清理可能导致软件打不开 |
C:\ProgramData\Package Cache |
许多安装器的缓存,删除后应用可能无法修复/卸载 |
C:\ProgramData\Microsoft\Windows\WER |
虽然我上面写了可以清,但里面可能有需要排查崩溃问题时的关键日志,如果空占空间不大建议保留 |
5.4 建议加一个日志输出,别让脚本变成“黑盒”
前面脚本里我加入了日志功能,每次运行都会把“清理了哪几个项目、什么时间清理的”写入C:\C_Clean_Log目录下。这样做有个非常实际的好处:如果哪天系统出现了异常,你想排查是不是清理脚本误删了什么,可以直接打开日志看当时删了哪些路径,能省掉一大半排查时间。
日志最好不要写成“覆盖”模式,每次运行都生成一个带时间戳的新文件。这样你还能对比这次和上次清理的效果差异,判断空间释放是否正常。脚本最开始for /f拿到系统日期时间的部分,就是为这个目的服务的。
6. 这套脚本还能怎么扩展:按需收集空间、白名单、多端同步
清理C盘并不是一锤子买卖,每个用户的习惯不一样,装的应用不一样,C盘里的垃圾大户不一样。所以我把这套脚本做成一个“底子”,你可以按自己的情况往上加模块。
6.1 按软件单独加一个缓存清理区块
比如你重度使用微信PC版,它的聊天文件、缓存图片会占很大空间。清理逻辑是:先退出微信进程,再删除C:\Users\<你的用户名>\AppData\Roaming\Tencent\WeChat\...下的CACHE目录和FileStorage缓存。类似地,QQ可以清理%AppData%\Tencent\QQ下的临时文件。这种按软件定制的方式,往往比通用清理效果更明显,因为软件缓存通常集中在固定的目录里。
6.2 加入“只统计不删除”的干跑模式
如果你第一次使用脚本,心里没底,怕误删,可以在脚本开头加一个参数开关,实现“只扫描统计、不执行删除”的干跑模式:
bat复制:: 在脚本开头定义
set "MODE=DRY" :: 改成 "RUN" 即为正式执行
if "%MODE%"=="DRY" (
echo 干跑模式:以下目录将被清理,但本次不会删除
echo 用户临时目录: %TEMP%
echo 系统临时目录: C:\Windows\Temp
...
)
这样你可以先看一遍脚本准备清理哪些目录,确认无风险后再把MODE改成RUN正式运行。
6.3 做一份白名单机制,防止误删特定文件
有一种情况是:你自己在TEMP目录里放了一些“暂时不要删”的文件,比如调试用的压缩包、临时下载的工具。这时候可以在脚本里加一个白名单判断:
bat复制:: 定义白名单文件
set "WHITELIST=my_debug.zip keep_me.txt"
for %%w in (%WHITELIST%) do (
if exist "%TEMP%\%%w" (
echo 跳过白名单文件:%%w >> "%LogFile%"
)
)
不过说实话,把重要文件放在临时目录里不是什么好习惯,我建议就算不做白名单,你也别把有用的东西临时放Temp下面,太容易丢了。
6.4 多设备同步:把脚本上传到网盘或Git仓库
如果你有台式机和笔记本好几台设备,这套脚本最省事的维护方式是把clean_c.bat放在一个固定的网盘目录或代码仓库里,改动后自动同步到所有设备。或者更简单一点,把脚本文件放到你日常用的U盘里,哪个电脑C盘满了就插上去跑一次,还能顺手帮朋友清一下。反正bat是纯文本,不会感染电脑、不需要安装环境,跨设备使用非常友好。
7. 最后分享一点我自己的使用心得
脚本这个东西,不是越复杂越好。我自己用的清理脚本版本,实际上比上面贴的还要精简,只有删除用户Temp、系统Temp、更新缓存和回收站这四块,其他内容都是按需临时加的。为什么?因为每次清理都在系统上做了一次不可逆操作,脚本越大,出问题的概率越高,维护心智负担也越大。
我再给你一个使用建议:第一次跑完脚本后,记下清理前后C盘剩余空间的变化,比如从3.2GB变成了8.6GB,把这个数字写在日志里。下一次跑完对比一下,如果释放的空间明显变小,说明你日常使用习惯里产生垃圾的速度变慢了,是个好现象;如果释放空间还是很大,你可以通过日志看看是哪个模块贡献最多,再针对性地调整。
整理C盘是一个“拼耐心”的活,脚本能帮你把重复劳动自动化,但它不能帮你想明白“什么东西该留、什么东西该丢”这个本质问题。这篇分享里给的代码和思路,都是我实际用过的方案,你照着搭好之后,大部分日常清理需求应该都能覆盖。等你自己跑两个星期,形成习惯了,就会觉得:C盘清理这件事,不值得再装一个什么东西去解决。
