萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 網路基礎知識

Windows 一鍵清空所有使用者帳號回收站:批次檔/命令列/圖形化工具完整教學

場景:多使用者電腦,管理員想一次清空所有人的回收站

Windows 為每個使用者維護獨立的回收站資料夾。管理員若想一次清空所有帳號的回收站 (釋放空間、清理敏感檔案、統一維護),不能只清自己的。本文提供**批次檔、PowerShell、命令列、第三方工具**多種方案,涵蓋 Windows 7/8/10/11/Server 2008R2+。

核心知識:回收站儲存結構

  • Windows Vista/7/8/10/11/Server 2008R2+:C:\$Recycle.Bin\%SID% — 每個使用者的 SID (安全性識別碼) 為資料夾名稱。
  • Windows XP/Server 2003:C:\Recycler\%SID% (FAT32) 或 C:\Recycled\%SID% (NTFS) — 結構不同,較少見。
  • $Recycle.Bin 為**隱藏、系統、資料夾**,需管理員權限存取。

方案一:批次檔 (.bat) — 最簡單、免安裝、可排程

1.1 建立批次檔

  1. 開啟記事本 (Notepad)。
  2. 貼上以下程式碼:
@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
  1. 「檔案」→「另存新檔」→ 檔案類型選「所有檔案」→ 檔名 ClearAllRecycleBins.bat → 存放在桌面或固定資料夾。

1.2 執行方式

  • 滑鼠右鍵 → 「以系統管理員身分執行」 (關鍵!否則無權限存取其他使用者 SID 資料夾)。
  • 按任意鍵結束。

1.3 進階版:自動偵測所有磁碟機

@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

方案二:PowerShell — 物件導向、功能更強、可整合腳本

2.1 一鍵指令 (管理員 PowerShell)

# 清空 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 } } }

2.2 進階腳本:顯示清理前後大小、記錄日誌、支援 WhatIf

<#>
.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 只預覽不刪除)。

方案三:命令列 (cmd) 單指令快速清空 (目前使用者)

# 僅清空目前登入使用者的回收站
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 內建)自動清理臨時檔、回收站 (超過天數)、下載資料夾僅限目前使用者、可設定排程自動執行

方案五:群組原則 / 登錄 / 計畫工作 — 企業級自動化部署

  • GPO 部署批次檔/PowerShell 腳本**:使用者設定/電腦設定 → 原則/偏好設定 → Windows 設定 → 指令檔/排程工作 → 登入/啟動/定期執行。
  • 登錄設定自動清理舊檔** (Win10/11):HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\\NukeOnDelete = 1 (立即刪除不進回收站) / MaxCapacity 限制大小。
  • Storage Sense 群組原則**:電腦設定 → 系統 → 儲存空間感知 → 強制開啟、設定回收站保留天數 (如 7 天)。

常見問題與注意事項

問題原因/解決
「存取被拒絕」/「找不到檔案」1. 未以**管理員權限**執行 2. 檔案被其他程式鎖定 (關閉檔案總管/相關程式/重啟) 3. 檔案路徑過長 (>260) → 啟用長路徑支援 (GPO/註冊表 LongPathsEnabled) 4. 權限繼承問題 → 取得擁有權 (Takeown/icacls) 後再刪。
清空後磁碟空間未釋放1. 檔案仍被進程開啟 (Process Explorer 找句柄關閉) 2. 影子複製/系統還原點佔用空間 (vssadmin list shadowstorage / 刪除還原點) 3. NTFS 壓縮/稀疏檔案/硬連結 計算差異 4. 重啟/執行 chkdsk /f 修復檔案系統。
網路磁碟機/映射磁碟機無回收站網路磁碟機刪除檔案**直接永久刪除**,不經回收站 (除非檔案伺服器端設定回收站/快照/回收站功能)。
BitLocker 加密磁碟機解鎖後同樣操作,無特殊差異。
ReFS 檔案系統結構類似 NTFS,同樣適用。

安全與隱私提醒

  • 清空回收站**非安全刪除** (資料仍可被復原軟體恢復)。
  • 機敏資料請用 **SDelete (Sysinternals) / Cipher /w / Eraser / BleachBit / 碎檔粉碎功能** 進行**多次覆寫/加密擦除**。
  • SSD 執行 TRIM (Windows 自動排程/手動 Optimize-Volume -DriveLetter C -Trim) 通知控制器區塊無效,配合控制器垃圾回收實現硬體級清除。

結語

一鍵清空所有使用者回收站,**批次檔最輕量、PowerShell 最強大、圖形化工具最友善、GPO/計畫工作最適合企業自動化**。根據環境選擇合適方案,記住**管理員權限**與**備份重要資料**是前提。定期清理回收站結合 Storage Sense 自動化,讓磁碟空間永遠暢通無阻。

copyright © 萬盛學電腦網 all rights reserved