Windows 用久了 C:\Users\<你>\AppData\Local\Temp 里能塞几 GB 垃圾——浏览器缓存、安装包解压残留、Office 恢复文件。用图形界面点很慢,一个 bat 脚本清完事。
最省事版本
用系统自带的 %TEMP% 变量,不用自己拼路径:
@echo off
setlocal
echo 当前用户: %USERNAME%
echo Temp 目录: %TEMP%
del /f /s /q "%TEMP%\*" >nul 2>&1
for /d %%p in ("%TEMP%\*") do rmdir /s /q "%%p" >nul 2>&1
echo 清理完成
pause
拆开看:
del /f /s /q— 强制、递归、静默删除文件for /d ... rmdir /s /q— 遍历所有子目录并递归删除>nul 2>&1— 屏蔽所有输出(正在使用的文件删不掉会报一堆红字,太吵)
存成 clean-temp.bat,双击就跑。
显式指定用户 Temp
有时想清另一个账户的 Temp,或者用完整路径更保险:
@echo off
setlocal
set USER_NAME=%USERNAME%
set USER_TEMP=C:\Users\%USER_NAME%\AppData\Local\Temp
echo 清理目录: %USER_TEMP%
del /f /s /q "%USER_TEMP%\*" >nul 2>&1
for /d %%p in ("%USER_TEMP%\*") do rmdir /s /q "%%p" >nul 2>&1
echo 完成
pause
顺便清系统 Temp(需要管理员)
C:\Windows\Temp 里的东西也可以清,但必须以管理员运行:
del /f /s /q "C:\Windows\Temp\*" >nul 2>&1
for /d %%p in ("C:\Windows\Temp\*") do rmdir /s /q "%%p" >nul 2>&1
自动申请管理员权限
想双击就自动 UAC 提升,脚本开头加:
@echo off
:: 检查是否管理员,不是就重新以管理员启动
net session >nul 2>&1
if %errorlevel% neq 0 (
powershell -Command "Start-Process '%~f0' -Verb RunAs"
exit /b
)
setlocal
del /f /s /q "%TEMP%\*" >nul 2>&1
for /d %%p in ("%TEMP%\*") do rmdir /s /q "%%p" >nul 2>&1
del /f /s /q "C:\Windows\Temp\*" >nul 2>&1
echo 完成
pause
计划任务:开机自动清
想让开机就跑:
schtasks /create /tn "CleanTemp" /tr "C:\path\to\clean-temp.bat" /sc onlogon
或者每天 3 点跑:
schtasks /create /tn "CleanTemp" /tr "C:\path\to\clean-temp.bat" /sc daily /st 03:00
删除任务:
schtasks /delete /tn "CleanTemp" /f
会看到的”报错”
跑完总有一堆”访问被拒绝”或”文件被占用”——这是正常的。有些文件是 Chrome、微信、系统服务在用,删不掉就是删不掉,重启后再跑一遍即可。
要看进度,把 >nul 2>&1 去掉就能看到每一步:
del /f /s /q "%TEMP%\*"
别做的事
- 不要清
C:\Windows下的其它目录,会把系统搞坏 - 不要开
del /q "C:\*" /s,字面意思 - 少用
rmdir /s /q C:\Windows\Temp整个删掉目录本身——某些系统组件会因为找不到目录而报错
一句话总结
del %TEMP%\* + for /d %%p rmdir %%p 就是 Temp 清理的核心两行。加个自动 UAC 和计划任务,就能忘掉这事。
