85

通常、ごみ箱の内容をマウスで右クリックし、[ごみ箱を空にする] を選択して削除します。しかし、コマンド プロンプトを使用してごみ箱の内容を削除する必要があるという要件があります。これは可能ですか?もしそうなら、どうすればそれを達成できますか?

4

14 に答える 14

100

システム ファイルを含むドライブのごみ箱ディレクトリを完全に削除することにより、コマンド ラインからごみ箱を効果的に "空にする" ことができます。(ほとんどの場合、これはC:ドライブになりますが、常に true になるとは限らないため、その値をハードコーディングしないでください。代わりに、%systemdrive%環境変数を使用してください。)

この戦術が機能する理由は、各ドライブに という名前の非表示で保護されたフォルダー$Recycle.binがあり、ごみ箱が削除されたファイルとフォルダーを実際に保存する場所だからです。このディレクトリが削除されると、Windows は自動的に新しいディレクトリを作成します。

そのため、ディレクトリを削除するには、指定したディレクトリ内のすべてのファイルとディレクトリも削除する必要があることを示すパラメーターを指定してrdコマンド ( r move d irectory ) を使用します。/s

rd /s %systemdrive%\$Recycle.bin

この操作により、現在ごみ箱にあるすべてのファイルとフォルダがすべてのユーザー アカウントから完全に削除されることに注意してください。さらに、このアクションを実行するのに十分な特権を得るには、(明らかに) 昇格したコマンド プロンプトからコマンドを実行する必要があります。

于 2012-02-11T09:30:10.620 に答える
33

Frank P. Westlakerecycle.exeのほうが好きです。素敵な前後の状態を提供します。(私は 10 年以上もの間、Frank のさまざまなユーティリティを使用してきました..)

C:\> recycle.exe /E /F
Recycle Bin: ALL
    Recycle Bin C:  44 items, 42,613,970 bytes.
    Recycle Bin D:   0 items, 0 bytes.
            Total:  44 items, 42,613,970 bytes.

Emptying Recycle Bin: ALL
    Recycle Bin C:   0 items, 0 bytes.
    Recycle Bin D:   0 items, 0 bytes.
            Total:   0 items, 0 bytes.

また、さらに多くの用途とオプションがあります (リストされている出力は /? からのものです)。

Recycle all files and folders in C:\TEMP:
  RECYCLE C:\TEMP\*

List all DOC files which were recycled from any directory on the C: drive:
  RECYCLE /L C:\*.DOC

Restore all DOC files which were recycled from any directory on the C: drive:
  RECYCLE /U C:\*.DOC

Restore C:\temp\junk.txt to C:\docs\resume.txt:
  RECYCLE /U "C:\temp\junk.txt" "C:\docs\resume.txt"

Rename in place C:\etc\config.cfg to C:\archive\config.2007.cfg:
  RECYCLE /R "C:\etc\config.cfg" "C:\archive\config.2007.cfg"
于 2014-02-28T01:02:30.380 に答える
16

nircmdでは、次のように入力してそれを行うことができます

nircmd.exe emptybin

http://www.nirsoft.net/utils/nircmd-x64.zip
http://www.nirsoft.net/utils/nircmd.html

于 2012-06-01T16:41:49.833 に答える
14

PowerShell スクリプトを使用できます (これは、フォルダー リダイレクトを使用するユーザーにも機能し、ごみ箱がサーバーのストレージ スペースを占有しないようにします)。

$Shell = New-Object -ComObject Shell.Application
$RecBin = $Shell.Namespace(0xA)
$RecBin.Items() | %{Remove-Item $_.Path -Recurse -Confirm:$false}

上記のスクリプトはhereから取得されます。

Windows 10 と powershell 5 を使用している場合は、Clear-RecycleBinコマンドレットがあります。

確認なしで PowerShell 内で使用するClear-RecycleBinには、 を使用できますClear-RecycleBin -Force。公式ドキュメントはここにあります

于 2016-03-09T15:57:22.320 に答える
5

私はパーティーに少し遅れていることを知っていますが、主観的にもっと優雅な解決策に貢献できると思いました.

ファイルシステムからすべてのファイルとフォルダーを大雑把に削除するのではなく、API 呼び出しでごみ箱を空にするスクリプトを探していました。(明らかに XP 以前でのみ動作するようです)しようとして失敗したので、コンパイルされた言語からRecycleBinObject.InvokeVerb("Empty Recycle &Bin")呼び出される shell32.dll に埋め込まれた関数を使用するという議論に出くわしました。SHEmptyRecycleBin()私は、PowerShell でそれを実行し、バッチ スクリプト ハイブリッドでラップできると考えました。

これを .bat 拡張子で保存し、実行してごみ箱を空にします。/y確認をスキップするには、スイッチで実行します。

<# : batch portion (begins PowerShell multi-line comment block)
:: empty.bat -- http://stackoverflow.com/a/41195176/1683264

@echo off & setlocal

if /i "%~1"=="/y" goto empty

choice /n /m "Are you sure you want to empty the Recycle Bin? [y/n] "
if not errorlevel 2 goto empty
goto :EOF

:empty
powershell -noprofile "iex (${%~f0} | out-string)" && (
    echo Recycle Bin successfully emptied.
)
goto :EOF

: end batch / begin PowerShell chimera #>
Add-Type shell32 @'
    [DllImport("shell32.dll")]
    public static extern int SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath,
        int dwFlags);
'@ -Namespace System

$SHERB_NOCONFIRMATION = 0x1
$SHERB_NOPROGRESSUI = 0x2
$SHERB_NOSOUND = 0x4

$dwFlags = $SHERB_NOCONFIRMATION
$res = [shell32]::SHEmptyRecycleBin([IntPtr]::Zero, $null, $dwFlags)

if ($res) { "Error 0x{0:x8}: {1}" -f $res,`
    (New-Object ComponentModel.Win32Exception($res)).Message }
exit $res

SHQueryRecycleBin()これは、 を呼び出す前にビンがすでに空であるかどうかを判断するためにを最初に呼び出す、より複雑なバージョンSHEmptyRecycleBin()です。choiceこれについては、確認と/y切り替えを取り除きました。

<# : batch portion (begins PowerShell multi-line comment block)
:: empty.bat -- http://stackoverflow.com/a/41195176/1683264

@echo off & setlocal
powershell -noprofile "iex (${%~f0} | out-string)"
goto :EOF

: end batch / begin PowerShell chimera #>
Add-Type @'

using System;
using System.Runtime.InteropServices;

namespace shell32 {
    public struct SHQUERYRBINFO {
        public Int32 cbSize; public UInt64 i64Size; public UInt64 i64NumItems;
    };

    public static class dll {
        [DllImport("shell32.dll")]
        public static extern int SHQueryRecycleBin(string pszRootPath,
            out SHQUERYRBINFO pSHQueryRBInfo);

        [DllImport("shell32.dll")]
        public static extern int SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath,
            int dwFlags);
    }
}
'@

$rb = new-object shell32.SHQUERYRBINFO

# for Win 10 / PowerShell v5
try { $rb.cbSize = [Runtime.InteropServices.Marshal]::SizeOf($rb) }
# for Win 7 / PowerShell v2
catch { $rb.cbSize = [Runtime.InteropServices.Marshal]::SizeOf($rb.GetType()) }

[void][shell32.dll]::SHQueryRecycleBin($null, [ref]$rb)
"Current size of Recycle Bin: {0:N0} bytes" -f $rb.i64Size
"Recycle Bin contains {0:N0} item{1}." -f $rb.i64NumItems, ("s" * ($rb.i64NumItems -ne 1))

if (-not $rb.i64NumItems) { exit 0 }

$dwFlags = @{
    "SHERB_NOCONFIRMATION" = 0x1
    "SHERB_NOPROGRESSUI" = 0x2
    "SHERB_NOSOUND" = 0x4
}
$flags = $dwFlags.SHERB_NOCONFIRMATION
$res = [shell32.dll]::SHEmptyRecycleBin([IntPtr]::Zero, $null, $flags)

if ($res) { 
    write-host -f yellow ("Error 0x{0:x8}: {1}" -f $res,`
        (New-Object ComponentModel.Win32Exception($res)).Message)
} else {
    write-host "Recycle Bin successfully emptied." -f green
}
exit $res
于 2016-12-17T03:43:36.930 に答える
5

すべてを密かに削除するには、次のことを試してください。

rd /s /q %systemdrive%\$Recycle.bin
于 2014-04-13T15:29:42.533 に答える
1

EmptyRecycleBin.pyPythonスクリプトを使用しています

あなたがする必要がありますpip install winshell

#!python3

# Empty Windows Recycle Bin

import winshell

try:
    winshell.recycle_bin().empty(confirm=False, show_progress=True, sound=False)
    print("Recycle Bin emptied")

except:
    print('Recycle Bin is already empty')

ブール値の False ステートメントと True ステートメントを変更して、次をオンまたはオフにすることができます: はい\いいえダイアログ、プログレス バー、効果音を確認します。

Python を使用しない場合は、powershell のこのワンライナーが最適です。

私は実際にそれを持っていてEmptyRecycleBin.ps1、Git Bashで使用しています。

Clear-RecycleBin -Force
于 2021-03-19T22:06:27.913 に答える