Windows 為每個使用者維護獨立的回收站資料夾。管理員若想一次清空所有帳號的回收站 (釋放空間、清理敏感檔案、統一維護),不能只清自己的。本文提供**批次檔、PowerShell、命令列、第三方工具**多種方案,涵蓋 Windows 7/8/10/11/Server 2008R2+。
C:\$Recycle.Bin\%SID% — 每個使用者的 SID (安全性識別碼) 為資料夾名稱。C:\Recycler\%SID% (FAT32) 或 C:\Recycled\%SID% (NTFS) — 結構不同,較少見。@echo off
chcp 65001 >nul
echo 正在清空所有使用者的回收站...
echo.
:: 方法 A: 使用 rd /s /q 直接刪除資料夾內容 (需管理員權限)
:: 注意: 這會刪除 $Recycle.Bin 下所有 SID 資料夾內的檔案, 但保留 SID 資料夾本身
if exist "C:\$Recycle.Bin" (
echo 正在處理 C:\$Recycle.Bin ...
for /d %%i in ("C:\$Recycle.Bin\*") do (
echo 清空 %%i ...
rd /s /q "%%i" 2>nul
:: 重新建立空資料夾以保留結構 (避免某些情況下系統報錯)
md "%%i" 2>nul
)
)
:: 如果有其他磁碟機 (D:, E: ...), 請自行複製以上區塊並修改磁碟機代號
:: 例如:
:: if exist "D:\$Recycle.Bin" ( ... )
echo.
echo 所有回收站已清空完成!
pause
ClearAllRecycleBins.bat → 存放在桌面或固定資料夾。@echo off
chcp 65001 >nul
echo 正在掃描所有磁碟機並清空回收站...
for %%d in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist "%%d:\$Recycle.Bin" (
echo 正在處理 %%d:\$Recycle.Bin ...
for /d %%i in ("%%d:\$Recycle.Bin\*") do (
rd /s /q "%%i" 2>nul
md "%%i" 2>nul
)
)
)
echo 完成! 按任意鍵結束...
pause
# 清空 C: 所有使用者回收站
Get-ChildItem "C:\$Recycle.Bin" -Directory | ForEach-Object { Remove-Item $_.FullName -Recurse -Force -ErrorAction SilentlyContinue; New-Item -ItemType Directory -Path $_.FullName -Force | Out-Null }
# 所有磁碟機
Get-PSDrive -PSProvider FileSystem | ForEach-Object { $drive = $_.Root; if (Test-Path "$drive\$Recycle.Bin") { Get-ChildItem "$drive\$Recycle.Bin" -Directory | ForEach-Object { Remove-Item $_.FullName -Recurse -Force -ErrorAction SilentlyContinue; New-Item -ItemType Directory -Path $_.FullName -Force | Out-Null } } }
<#>
.SYNOPSIS
清空所有磁碟機所有使用者的回收站, 顯示釋放空間.
.NOTES
需管理員權限執行.
#>
param(
[switch]$WhatIf
)
$totalFreed = 0
$log = @()
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$log += "=== 回收站清理開始 $timestamp ==="
Get-PSDrive -PSProvider FileSystem | ForEach-Object {
$drive = $_.Root.TrimEnd('\')
$recyclePath = "$drive\$Recycle.Bin"
if (Test-Path $recyclePath) {
$dirs = Get-ChildItem $recyclePath -Directory -ErrorAction SilentlyContinue
foreach ($dir in $dirs) {
$size = (Get-ChildItem $dir.FullName -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum
if ($size -gt 0) {
$sizeMB = [math]::Round($size/1MB, 2)
$msg = "[$drive] $($dir.Name) : $sizeMB MB"
$log += $msg
Write-Host $msg
$totalFreed += $size
if (-not $WhatIf) {
Remove-Item $dir.FullName -Recurse -Force -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Path $dir.FullName -Force | Out-Null
}
}
}
}
}
$totalFreedMB = [math]::Round($totalFreed/1MB, 2)
$log += "=== 總計釋放: $totalFreedMB MB ==="
$log | Out-File -FilePath "$env:TEMP\ClearRecycleBin_$(Get-Date -Format 'yyyyMMdd_HHmmss').log" -Encoding utf8
Write-Host "完成! 總計釋放 $totalFreedMB MB. 日誌儲存於 $env:TEMP."
pause
儲存為 Clear-RecycleBin.ps1,執行:PowerShell -ExecutionPolicy Bypass -File .\Clear-RecycleBin.ps1 (加 -WhatIf 只預覽不刪除)。
# 僅清空目前登入使用者的回收站
rd /s /q %systemdrive%\$Recycle.Bin\%username% 2>nul
# 或使用 SID (更精確)
for /f "tokens=2 delims==" %i in ('wmic useraccount where "name='%username%'" get sid /value') do @rd /s /q %systemdrive%\$Recycle.Bin\%i 2>nul
注意:上述僅清空**目前使用者**。清空**所有使用者**需方案一/二的管理員權限迴圈。
| 工具 | 特點 | 支援清空所有使用者 |
|---|---|---|
| CCleaner (免費版/專業版) | 介面友善、可自訂清理項目、排程、註冊表清理 | 是 (需以管理員執行、勾選「所有使用者的回收站」) |
| BleachBit (開源、跨平台) | 深度清理、碎檔粉碎、命令列介面、可攜版 | 是 (以管理員執行、選取「系統」→「回收站」) |
| Wise Disk Cleaner | 掃描快、可排程、介面中文化 | 是 (管理員模式) |
| Storage Sense / 儲存空間感知 (Win10/11 內建) | 自動清理臨時檔、回收站 (超過天數)、下載資料夾 | 僅限目前使用者、可設定排程自動執行 |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\\NukeOnDelete = 1 (立即刪除不進回收站) / MaxCapacity 限制大小。| 問題 | 原因/解決 |
|---|---|
| 「存取被拒絕」/「找不到檔案」 | 1. 未以**管理員權限**執行 2. 檔案被其他程式鎖定 (關閉檔案總管/相關程式/重啟) 3. 檔案路徑過長 (>260) → 啟用長路徑支援 (GPO/註冊表 LongPathsEnabled) 4. 權限繼承問題 → 取得擁有權 (Takeown/icacls) 後再刪。 |
| 清空後磁碟空間未釋放 | 1. 檔案仍被進程開啟 (Process Explorer 找句柄關閉) 2. 影子複製/系統還原點佔用空間 (vssadmin list shadowstorage / 刪除還原點) 3. NTFS 壓縮/稀疏檔案/硬連結 計算差異 4. 重啟/執行 chkdsk /f 修復檔案系統。 |
| 網路磁碟機/映射磁碟機無回收站 | 網路磁碟機刪除檔案**直接永久刪除**,不經回收站 (除非檔案伺服器端設定回收站/快照/回收站功能)。 |
| BitLocker 加密磁碟機 | 解鎖後同樣操作,無特殊差異。 |
| ReFS 檔案系統 | 結構類似 NTFS,同樣適用。 |
TRIM (Windows 自動排程/手動 Optimize-Volume -DriveLetter C -Trim) 通知控制器區塊無效,配合控制器垃圾回收實現硬體級清除。一鍵清空所有使用者回收站,**批次檔最輕量、PowerShell 最強大、圖形化工具最友善、GPO/計畫工作最適合企業自動化**。根據環境選擇合適方案,記住**管理員權限**與**備份重要資料**是前提。定期清理回收站結合 Storage Sense 自動化,讓磁碟空間永遠暢通無阻。