# Windows 临时文件夹，哪些可以删

Windows 的临时文件夹不止一个，当前账户自己的是 `%TEMP%`，一般在 `C:\Users\<用户名>\AppData\Local\Temp`，整台电脑共用的是 `C:\Windows\Temp`，Windows 11 上以 SYSTEM 身份运行的进程还会用 `C:\Windows\SystemTemp`。放了一周以上的文件可以放心删，正在使用的文件会拒绝删除，这是正常的，跳过就好，不要硬删，最省事又安全的做法是设置 › 系统 › 存储 › 临时文件，想让它自动处理就开存储感知。

## 临时文件夹在哪

程序用哪个临时文件夹不是随便挑的，[微软的 GetTempPath2 说明](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-gettemppath2w)写了普通程序的查找顺序，先看 `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%`，清自己的不会动到别的用户。

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-windows-temp-folder-cleanup-zh-mobile.webp" type="image/webp" width="768" height="1180">
    <img src="/img/blog/windows-windows-temp-folder-cleanup-zh.webp" width="1360" height="454" loading="lazy" alt="两类临时文件夹，归属不同">
  </picture>
  <figcaption>当前账户的程序写进 %TEMP%，C:\Windows 下的临时文件夹属于整台电脑，需要管理员权限才能清理。</figcaption>
</figure>

## 临时文件为什么越积越多，为什么有的删不掉

[微软的 cleanmgr 参考](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cleanmgr)说得很直白，程序有时会把临时信息存在 Temp 文件夹里，退出前通常会自己删掉，一周内没改动过的临时文件可以放心删。留下来的，多半来自崩溃的程序、装到一半被关掉的安装包，或者从来不收拾的软件，常见的是解压出来的安装程序、更新下载、日志，还有一些软件故意放在这里的缓存。

程序还开着的文件删不掉，Windows 会提示文件正在使用，这是系统在保护还没做完的工作，比如一个安装程序刚把自己解压出来，正等着你点下一步，或者视频剪辑软件正在写它的临时文件。这些跳过就行，程序关掉以后通常就会放开，重启会把所有程序都关掉，下次清理就能清掉。

一周这条线在 `C:\Windows\Temp` 里最要紧，安装程序和 Windows 组件干活时可能把工作文件放在这里，今天的文件也许正处在一次更新的中途，所以 Windows 自己的工具和 Mole 都不碰一周以内的东西。

## 用 Windows 自带的工具清理

Windows 11 上打开设置 › 系统 › 存储，点临时文件，Windows 会按类别列出大小，只勾自己认得的，下载那一项除非自己先看过那个文件夹，否则别勾，[微软的释放空间说明](https://support.microsoft.com/en-us/windows/experience/storage-filemanagement/free-up-drive-space-in-windows)里，清理建议里同样列着临时文件。

想让它自动处理，就在同一个存储页面打开存储感知，[微软的存储感知说明](https://support.microsoft.com/en-us/windows/experience/storage-filemanagement/manage-drive-space-with-storage-sense)写着按默认设置它会在磁盘空间不足时运行，不设规则就不会动下载文件夹和云端文件。磁盘清理也还能用，两者逐个类别的对比见 [磁盘清理和存储感知怎么选](/zh/windows/blog/disk-cleanup-vs-storage-sense-windows)。

## 先看大小，想手动清也可以

下面几条 PowerShell 命令只读取，第一条看 `%TEMP%` 一共多少 MB，后两条看其中七天以前的有多少：

```powershell
(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 只会把要删的东西列出来：

```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 文档](https://learn.microsoft.com/en-us/windows/dev-drive/)在唯一建议这么做的场景里，也提醒了可能的副作用。

## Mole for Windows 怎么处理临时文件

Mole 的清理页有两行。**临时文件**对应自己的 `%TEMP%`，只删七天以前的内容，判断时取修改日期和创建日期里较新的那个，和上面的做法一样，`%TEMP%\Low` 会保留，因为这个文件夹带着低完整性标签，沙盒里的程序要靠它才能写临时文件。正在使用的文件会跳过，下次运行再处理，刚刚被清空的文件夹也要等它自己的日期过了七天才删。

**Windows 临时文件**对应 `C:\Windows\Temp` 和 `C:\Windows\SystemTemp`，同样只处理七天以前的内容，这两行需要管理员权限，全选不会替你勾上，点清理时才弹出授权，取消授权就保留不动，里面的文件夹也会保留，正在运行的安装程序的工作目录不会被删掉。普通行按设置里的移除方式处理，管理员行直接删除。清理页列出的其他内容可以看 [Windows 缓存清理](/zh/windows/blog/windows-cache-cleanup)。

## 清完以后怎么确认

在此电脑里记下 C 盘的可用空间，清理，再看一次。临时文件夹会随着用电脑慢慢再满起来，下周又多出几百 MB 很正常，如果每天都涨好几个 GB，就该找出是谁在写，把 `%TEMP%` 按修改日期排序，看最新的几个文件夹名字，去处理那个程序，而不是清得更勤。空间还是不够的话，原因在别处，下一步可以看 [C 盘满了怎么分类排查](/zh/windows/blog/windows-c-drive-full)。

## 常见问题

### Windows 11 的临时文件可以删吗？

放了一周以上的可以，微软说一周内没改动过的临时文件可以放心删，正在使用的文件属于还在运行的程序，跳过就行。

### Windows 的临时文件夹在哪里？

自己的是 `%TEMP%`，一般在 `C:\Users\<用户名>\AppData\Local\Temp`，整台电脑共用的是 `C:\Windows\Temp`，Windows 11 上 SYSTEM 进程用的是 `C:\Windows\SystemTemp`。

### Temp 文件夹里为什么有些文件删不掉？

还有程序开着它们，常见的是安装程序、更新或软件的临时文件，关掉程序或重启后再清，不要夺取所有权硬删。

### 存储感知会自动删除临时文件吗？

打开以后会，按默认设置它在系统盘空间不足时清理临时文件，不设规则就不会动下载文件夹。


Canonical: https://mole.fit/zh/windows/blog/windows-temp-folder-cleanup
