Windows bat 脚本清理 Temp 目录:%TEMP% 变量与 del/rmdir 用法

用 %TEMP% 清理当前用户临时目录

@echo off
setlocal

echo 当前用户: %USERNAME%
echo Temp目录: %TEMP%

:: 删除文件(/f 强制 /s 子目录 /q 静默)
del /f /s /q "%TEMP%\*" >nul 2>&1

:: 删除空文件夹
for /d %%p in ("%TEMP%\*") do rmdir /s /q "%%p" >nul 2>&1

echo 清理完成
pause

%TEMP% 是 Windows 内建变量,直接指向当前用户的临时目录(通常是 C:\Users\用户名\AppData\Local\Temp),不需要手动拼路径。

同时清理系统 Temp(需管理员)

@echo off
setlocal

:: 用户 temp
del /f /s /q "%TEMP%\*" >nul 2>&1
for /d %%p in ("%TEMP%\*") do rmdir /s /q "%%p" >nul 2>&1

:: 系统 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

echo 清理完成
pause

手动拼接路径写法

如果需要明确用户名,也可以用 %USERNAME% 拼路径:

set USER_TEMP=C:\Users\%USERNAME%\AppData\Local\Temp

del /f /s /q "%USER_TEMP%\*" >nul 2>&1
for /d %%p in ("%USER_TEMP%\*") do rmdir /s /q "%%p" >nul 2>&1

两种写法效果一致,推荐用 %TEMP% 更简洁。

常见问题

部分文件删不掉

正常现象。系统正在使用的文件(如浏览器缓存、日志)不会被删,>nul 2>&1 会把错误输出吞掉,脚本继续执行,不影响其他文件的清理。

清理完大小没变化

有些文件夹包含只读属性文件。可以在 del 前加 /a 参数(包含只读):

del /f /s /q /a "%TEMP%\*" >nul 2>&1

不要手动清 C:\Windows\System32\config\systemprofile\AppData\Local\Temp,这是系统服务的临时目录。

设为计划任务定期执行

  1. 把脚本保存为 clean_temp.bat
  2. 打开”任务计划程序”(Task Scheduler)
  3. 创建基本任务 → 触发器选”登录时”或”每周”
  4. 操作选”启动程序” → 指向 clean_temp.bat
  5. 权限选”使用最高权限运行”

这样每次登录自动清理,免手动执行。