Windows 临时文件夹,哪些可以删
Windows 的临时文件夹不止一个,当前账户自己的是 %TEMP%,一般在 C:\Users\<用户名>\AppData\Local\Temp,整台电脑共用的是 C:\Windows\Temp,Windows 11 上以 SYSTEM 身份运行的进程还会用 C:\Windows\SystemTemp。放了一周以上的文件可以放心删,正在使用的文件会拒绝删除,这是正常的,跳过就好,不要硬删,最省事又安全的做法是设置 › 系统 › 存储 › 临时文件,想让它自动处理就开存储感知。
临时文件夹在哪
程序用哪个临时文件夹不是随便挑的,微软的 GetTempPath2 说明写了普通程序的查找顺序,先看 TMP 环境变量,再看 TEMP,然后是 USERPROFILE,最后是 Windows 目录,以 SYSTEM 身份运行的进程拿到的则是 C:\Windows\SystemTemp,其他进程访问不了。
| 文件夹 | 谁往里写 | 谁能清理 |
|---|---|---|
%TEMP%(AppData\Local\Temp) |
当前账户里运行的程序,包括很多安装程序 | 自己就行,不需要管理员权限 |
C:\Windows\Temp |
整台电脑范围的临时工作 | 管理员 |
C:\Windows\SystemTemp |
以 SYSTEM 身份运行的进程 | 管理员,用 Windows 自带的清理工具 |
打开自己的那个,按 Win + R,输入 %TEMP% 回车就行,每个 Windows 账户都有自己的 %TEMP%,清自己的不会动到别的用户。
临时文件为什么越积越多,为什么有的删不掉
微软的 cleanmgr 参考说得很直白,程序有时会把临时信息存在 Temp 文件夹里,退出前通常会自己删掉,一周内没改动过的临时文件可以放心删。留下来的,多半来自崩溃的程序、装到一半被关掉的安装包,或者从来不收拾的软件,常见的是解压出来的安装程序、更新下载、日志,还有一些软件故意放在这里的缓存。
程序还开着的文件删不掉,Windows 会提示文件正在使用,这是系统在保护还没做完的工作,比如一个安装程序刚把自己解压出来,正等着你点下一步,或者视频剪辑软件正在写它的临时文件。这些跳过就行,程序关掉以后通常就会放开,重启会把所有程序都关掉,下次清理就能清掉。
一周这条线在 C:\Windows\Temp 里最要紧,安装程序和 Windows 组件干活时可能把工作文件放在这里,今天的文件也许正处在一次更新的中途,所以 Windows 自己的工具和 Mole 都不碰一周以内的东西。
用 Windows 自带的工具清理
Windows 11 上打开设置 › 系统 › 存储,点临时文件,Windows 会按类别列出大小,只勾自己认得的,下载那一项除非自己先看过那个文件夹,否则别勾,微软的释放空间说明里,清理建议里同样列着临时文件。
想让它自动处理,就在同一个存储页面打开存储感知,微软的存储感知说明写着按默认设置它会在磁盘空间不足时运行,不设规则就不会动下载文件夹和云端文件。磁盘清理也还能用,两者逐个类别的对比见 磁盘清理和存储感知怎么选。
先看大小,想手动清也可以
下面几条 PowerShell 命令只读取,第一条看 %TEMP% 一共多少 MB,后两条看其中七天以前的有多少:
(Get-ChildItem $env:TEMP -Force -Recurse -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum / 1MB
$cutoff = (Get-Date).AddDays(-7)
(Get-ChildItem $env:TEMP -Force -Recurse -File -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff -and $_.CreationTime -lt $cutoff } | Measure-Object Length -Sum).Sum / 1MB
这里故意同时看了两个日期,今天才拷进来或解压出来的文件,修改日期可能还是压缩包里带的旧日期,只有创建日期能说明它是今天来的,两个都看,刚解压出来的安装程序就不会被算进去。
想手动删,先预览,加上 -WhatIf,PowerShell 只会把要删的东西列出来:
$cutoff = (Get-Date).AddDays(-7)
Get-ChildItem $env:TEMP -Force -Recurse -File -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff -and $_.CreationTime -lt $cutoff } | Remove-Item -Force -WhatIf
看一遍列表,认得出还在用的,先把对应的软件关掉,再把同一行去掉 -WhatIf 运行。Remove-Item 是直接删除,不进回收站,遇到被占用的文件报错是正常的,什么也不会改变。
哪些事不要做
- 不要删除 Temp 文件夹本身,也不要删它下面的
Low文件夹,程序默认这些文件夹存在,清空里面的东西就好,别把文件夹删了。 - 不要为了删掉顽固文件去夺取
C:\Windows\Temp或C:\Windows\SystemTemp的所有权,那里删不掉的文件通常属于正在运行的安装程序、更新或服务。 - 不要在装软件、Windows 更新或导出大文件的时候清理,等它做完,或者先重启。
- 不要只为了省空间就把
TEMP和TMP改到别的盘,很多程序和安装包都依赖它们,微软的 Dev Drive 文档在唯一建议这么做的场景里,也提醒了可能的副作用。
Mole for Windows 怎么处理临时文件
Mole 的清理页有两行。临时文件对应自己的 %TEMP%,只删七天以前的内容,判断时取修改日期和创建日期里较新的那个,和上面的做法一样,%TEMP%\Low 会保留,因为这个文件夹带着低完整性标签,沙盒里的程序要靠它才能写临时文件。正在使用的文件会跳过,下次运行再处理,刚刚被清空的文件夹也要等它自己的日期过了七天才删。
Windows 临时文件对应 C:\Windows\Temp 和 C:\Windows\SystemTemp,同样只处理七天以前的内容,这两行需要管理员权限,全选不会替你勾上,点清理时才弹出授权,取消授权就保留不动,里面的文件夹也会保留,正在运行的安装程序的工作目录不会被删掉。普通行按设置里的移除方式处理,管理员行直接删除。清理页列出的其他内容可以看 Windows 缓存清理。
清完以后怎么确认
在此电脑里记下 C 盘的可用空间,清理,再看一次。临时文件夹会随着用电脑慢慢再满起来,下周又多出几百 MB 很正常,如果每天都涨好几个 GB,就该找出是谁在写,把 %TEMP% 按修改日期排序,看最新的几个文件夹名字,去处理那个程序,而不是清得更勤。空间还是不够的话,原因在别处,下一步可以看 C 盘满了怎么分类排查。
常见问题
Windows 11 的临时文件可以删吗?
放了一周以上的可以,微软说一周内没改动过的临时文件可以放心删,正在使用的文件属于还在运行的程序,跳过就行。
Windows 的临时文件夹在哪里?
自己的是 %TEMP%,一般在 C:\Users\<用户名>\AppData\Local\Temp,整台电脑共用的是 C:\Windows\Temp,Windows 11 上 SYSTEM 进程用的是 C:\Windows\SystemTemp。
Temp 文件夹里为什么有些文件删不掉?
还有程序开着它们,常见的是安装程序、更新或软件的临时文件,关掉程序或重启后再清,不要夺取所有权硬删。
存储感知会自动删除临时文件吗?
打开以后会,按默认设置它在系统盘空间不足时清理临时文件,不设规则就不会动下载文件夹。