# 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%` 再按 Enter 就行。每個 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)寫著按預設設定它會在磁碟空間不足時執行。不設規則就不會動下載資料夾和雲端檔案。磁碟清理也還能用。兩者逐個類別的對比見 [磁碟清理和儲存空間感知怎麼選](/tw/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 快取清理](/tw/windows/blog/windows-cache-cleanup)。

## 清完以後怎麼確認

在本機裡記下 C 槽的可用空間，清理，再看一次。暫存資料夾會隨著用電腦慢慢再滿起來。下週又多出幾百 MB 很正常。如果每天都漲好幾個 GB，就該找出是誰在寫。把 `%TEMP%` 按修改日期排序，看最新的幾個資料夾名稱，去處理那個程式，而不是清得更勤。空間還是不夠的話，原因在別處。下一步可以看 [C 槽滿了怎麼分類排查](/tw/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/tw/windows/blog/windows-temp-folder-cleanup
