как очистить корзину через командную строку?

Обычно мы удаляем содержимое корзины, щелкая ее правой кнопкой мыши и выбирая «Очистить корзину». Но у меня есть требование, где мне нужно удалить содержимое корзины с помощью командной строки. Это возможно? Если так, как я могу достичь этого?

74 голоса | спросил user1016403 11 FebruaryEurope/MoscowbSat, 11 Feb 2012 12:50:22 +0400000000pmSat, 11 Feb 2012 12:50:22 +040012 2012, 12:50:22

11 ответов


0

Вы можете эффективно «очистить» корзину из командной строки, навсегда удалив каталог корзины на диске, который содержит системные файлы. (В большинстве случаев это будет диск C:, но вы не должны жестко кодировать это значение, потому что оно не всегда будет истинным. Вместо этого используйте переменную среды %systemdrive%.)

Причина, по которой эта тактика работает, заключается в том, что на каждом диске есть скрытая защищенная папка с именем $Recycle.bin, в которой находится Recycle. Бин на самом деле хранит удаленные файлы и папки. Когда этот каталог удаляется, Windows автоматически создает новый каталог.

Итак, чтобы удалить каталог, используйте команду rd ( r emove d иректория) с параметром /s, который указывает, что все файлы и каталоги в указанном каталоге должны быть удалены как а также:

rd /s %systemdrive%\$Recycle.bin

Обратите внимание, что это действие навсегда удалит все файлы и папки, находящиеся в настоящее время в корзине , из всех учетных записей пользователей . Кроме того, вам (очевидно) придется запустить команду из командной строки с повышенными правами, чтобы иметь достаточные права для выполнения этого действия.

ответил Cody Gray 11 FebruaryEurope/MoscowbSat, 11 Feb 2012 13:30:10 +0400000000pmSat, 11 Feb 2012 13:30:10 +040012 2012, 13:30:10
0

Я предпочитаю recycle.exe из Фрэнк П. Вестлейк . Это обеспечивает хороший статус до и после. (Я использую различные утилиты Фрэнка уже более десяти лет ..)

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"
ответил wasatchwizard 28 FebruaryEurope/MoscowbFri, 28 Feb 2014 05:02:30 +0400000000amFri, 28 Feb 2014 05:02:30 +040014 2014, 05:02:30
0

nircmd позволяет вам сделать это, набрав

nircmd.exe emptybin

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

ответил Rahul 1 J0000006Europe/Moscow 2012, 20:41:49
0

Вы можете использовать скрипт powershell (это работает для пользователей с перенаправлением папок, а также для того, чтобы их корзины не занимали место на сервере)

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

Вышеуказанный скрипт взят из здесь .

Если у вас Windows 10 и PowerShell 5, есть Clear-RecycleBin командлет .

Чтобы использовать Clear-RecycleBin инсайдера PowerShell без подтверждения, вы можете использовать Clear-RecycleBin -Force. Официальную документацию можно найти здесь

ответил trythis 9 MarpmWed, 09 Mar 2016 18:57:22 +03002016-03-09T18:57:22+03:0006 2016, 18:57:22
0

, а

  

rd /s /q% systemdrive% \ $ RECYCLE.BIN

удалит папку $ RECYCLE.BIN с системного диска, обычно это c :, следует рассмотреть возможность его удаления из любых других доступных разделов, поскольку в любом разделе на локальных и внешних дисках есть скрытая папка $ RECYCLE.BIN (но не на съемных дисках, таких как флэш-накопитель USB, у которых нет папки $ RECYCLE.BIN). ). Например, я установил программу в d :, чтобы удалить файлы, которые она переместила в корзину, которую я должен запустить:

  

rd /s /q d: \ $ RECYCLE.BIN

Дополнительную информацию можно получить у суперпользователя по адресу Очистить корзину для утилизации из командной строки

ответил Oz Edri 6 SatEurope/Moscow2014-12-06T06:24:03+03:00Europe/Moscow12bEurope/MoscowSat, 06 Dec 2014 06:24:03 +0300 2014, 06:24:03
0

Чтобы незаметно удалить все, попробуйте:

rd /s /q %systemdrive%\$Recycle.bin
ответил Robie 13 PMpSun, 13 Apr 2014 19:29:42 +040029Sunday 2014, 19:29:42
0

я использую эти команды в командном файле для очистки корзины:

del /q /s %systemdrive%\$Recycle.bin\*
for /d %%x in (%systemdrive%\$Recycle.bin\*) do @rd /s /q "%%x"
ответил pardeew 4 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 04 Sep 2016 08:47:14 +0300 2016, 08:47:14
0

Я знаю, что немного опоздала на вечеринку, но я подумала, что могу предложить свое субъективно более изящное решение.

Я искал сценарий, который очищал бы корзину с помощью вызова API, а не грубо удалял все файлы и папки из файловой системы. Неудачно в моих попытках RecycleBinObject.InvokeVerb("Empty Recycle &Bin") (который, очевидно, работает только в XP или более ранних версиях), я наткнулся на обсуждение использования функции, встроенной в 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
ответил rojo 17 SatEurope/Moscow2016-12-17T06:43:36+03:00Europe/Moscow12bEurope/MoscowSat, 17 Dec 2016 06:43:36 +0300 2016, 06:43:36
0

Я использую этот PowerShell oneliner:

gci C:\`$recycle.bin -force | remove-item -recurse -force

Работает для дисков, отличных от C: тоже

ответил rko281 22 MaramWed, 22 Mar 2017 10:30:33 +03002017-03-22T10:30:33+03:0010 2017, 10:30:33
0

Да, вы можете создать пакетный файл со следующим кодом:

cd \Desktop

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


REM The actual lines being writen are right, exept for the last one, the actual thigs being writen are "$RecBin.Items() | %{Remove-Item $_.Path -Recurse -Confirm:$false}"   
But since | and % screw things up, i had to make some changes.

Powershell.exe -executionpolicy remotesigned -File  C:\Desktop\FILENAME.ps1

Это в основном создает скрипт powershell, который очищает корзину в каталоге \ Desktop, а затем запускает ее.

ответил Zazman 29 J0000006Europe/Moscow 2018, 11:26:44
0

Все ответы слишком сложны. OP запросил способ сделать это из CMD.

Вот, пожалуйста (из файла cmd):

powershell.exe /c "$(New-Object -ComObject Shell.Application).NameSpace(0xA).Items() | %%{Remove-Item $_.Path -Recurse -Confirm:$false"

И да, он будет обновляться в проводнике.

ответил Your Sister 10 MonEurope/Moscow2018-12-10T13:53:34+03:00Europe/Moscow12bEurope/MoscowMon, 10 Dec 2018 13:53:34 +0300 2018, 13:53:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132