कमांड प्रॉम्प्ट के माध्यम से रीसायकलिन कैसे खाली करें?


80

आमतौर पर हम रीसायकल बिन सामग्री को माउस से राइट-क्लिक करके और "खाली रीसायकल बिन" का चयन करके हटा देते हैं। लेकिन मेरे पास एक आवश्यकता है जहां मुझे कमांड प्रॉम्प्ट का उपयोग करके रीसायकल बिन सामग्री को हटाने की आवश्यकता है। क्या यह संभव है? यदि हां, तो मैं इसे कैसे प्राप्त कर सकता हूं?


2
मैं तो बस जब रीसायकल बिन अपने अधिकतम आकार तक पहुँच जाता है विंडोज स्वतः सबसे पुरानी फाइलों को डिलीट करते हैं superuser.com/questions/69284/...
मैथ्यू लॉक

वहाँ एक तरीका है कि व्यवस्थापक cmd शीघ्र का उपयोग करने के अतिरिक्त कदम की आवश्यकता नहीं है? यह ठीक है अगर यह केवल मेरा खाता करता है, तो मैं केवल अपने पीसी पर एक खाते का उपयोग करता हूं।
user742864

जवाबों:


91

आप प्रभावी रूप से रीसायकल बिन निर्देशिका को रीमिक्स बिन निर्देशिका से रीसायकल बिन निर्देशिका को सिस्टम फ़ाइलों में शामिल कर सकते हैं। (ज्यादातर मामलों में, यह C:ड्राइव होगा, लेकिन आपको उस मान को हार्डकोड नहीं करना चाहिए क्योंकि यह हमेशा सही नहीं होगा। इसके बजाय, %systemdrive%पर्यावरण चर का उपयोग करें ।)

कारण यह है कि यह युक्ति काम करती है क्योंकि प्रत्येक ड्राइव में नाम के साथ एक छिपा हुआ, संरक्षित फ़ोल्डर होता है $Recycle.bin, जो कि रीसायकल बिन वास्तव में हटाए गए फ़ाइलों और फ़ोल्डरों को संग्रहीत करता है। जब यह निर्देशिका हटा दी जाती है, तो Windows स्वचालित रूप से एक नई निर्देशिका बनाता है।

इसलिए, निर्देशिका को हटाने के लिए, पैरामीटर के साथ rdकमांड ( r emove d irectory) का उपयोग करें /s, जो इंगित करता है कि निर्दिष्ट निर्देशिका के भीतर सभी फ़ाइलों और निर्देशिकाओं को हटा दिया जाना चाहिए:

rd /s %systemdrive%\$Recycle.bin

ध्यान दें कि यह क्रिया वर्तमान में सभी उपयोगकर्ता खातों से रीसायकल बिन में मौजूद सभी फ़ाइलों और फ़ोल्डरों को स्थायी रूप से हटा देगी । इसके अतिरिक्त, आप (स्पष्ट रूप से) को इस कार्रवाई को करने के लिए पर्याप्त विशेषाधिकार प्राप्त करने के लिए एक उन्नत कमांड प्रॉम्प्ट से कमांड को चलाना होगा।


17
कुछ और चेतावनी: बिन स्थिति में परिवर्तन एक्सप्लोरर (डेस्कटॉप आइकन) में प्रतिबिंबित नहीं हो सकता है जब तक कि आप वास्तव में रीसायकल बिन को नहीं खोलते और / या डेस्कटॉप को ताज़ा करते हैं, यह केवल उस विशेष मात्रा को प्रभावित करता है; अन्य ड्राइव पर पुनर्नवीनीकरण फ़ाइलें प्रभावित नहीं होंगी, इसलिए आप वास्तव में इस पद्धति के साथ रीसायकल बिन को खाली नहीं कर सकते हैं , और निर्देशिका का नाम विंडोज संस्करण द्वारा भिन्न हो सकता है (और मुझे विश्वास है कि फाइल सिस्टम भी)। यह हो सकता है $Recycle.bin, Recycled, Recycler, आदि और तुम भी एक से अधिक हो सकता है अगर नॉर्टन वसूली बिन जैसे आप बहु बूट प्रोग्राम अपने निर्देशिका है।
सिनेटेक

1
@Synetech, कैसे हम यह पता लगाने की कि यह है $Recycle.bin, Recycledया Recycler? क्या ऐसा करने के लिए एक चर है, या अपवादों को पकड़ने के माध्यम से एकमात्र तरीका है?
पचेरियर

3
नोट: यदि आप इसे एक स्क्रिप्ट में उपयोग कर रहे हैं, तो आप एक /qस्विच में भी पास करना चाहेंगे ताकि rdआपको अतिरिक्त संकेत न मिले। rd /s /q %SYSTEMDRIVE%\$Recycle.bin
जेम्स

मेरे विंडोज पर काम नहीं करता है 10. इस कमांड का उपयोग करने के बाद कुछ नहीं होता है।
jdhao

1
अनुस्मारक केवल CMD में काम करता है। यदि आप इसे cmd /c "rd /s %systemdrive%\$Recycle.bin"
पावरशेल

29

मैं फ्रैंक पी। वेस्टलेक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"

क्या यह समान समस्या Synetech का उल्लेख नहीं है? stackoverflow.com/questions/9238953/…
पचेरियर

1
@ स्पेसर मैं अपने डेस्कटॉप पर रीसायकल बिन नहीं दिखाता, इसलिए मैंने पहले कभी नहीं देखा कि आइकन अपडेट होता है या नहीं। बस इसे परीक्षण करने के बाद, आइकन को रीसायकल। Exe के माध्यम से सही ढंग से अपडेट किया जाता है । जहां तक ​​निर्देशिकाओं का सवाल है, मुझे उम्मीद है कि यह रीसायकल बिन को खाली करने के लिए एक Win32 एपीआई का उपयोग कर रहा है। यह कहते हुए कि, मैंने इस उपयोग को कई वर्षों तक Windows पर XP, 7, 8, 8.1 और सर्वर 2003, 2012, 2012 R2 सहित उपयोग किया है। (मैं शायद विस्टा और सर्वर 2008 पर इसका इस्तेमाल करता था, लेकिन उन ओएसस को बहुत लंबे समय तक नहीं चलाया था, इसलिए मैं निश्चित रूप से नहीं कह सकता ..)
kodbrown

1
हाँ, यह एक विशेष रूप से उपयोगी उपकरण नहीं है, खासकर जब से इसे पहले से ही करने के लिए अंतर्निहित तरीके हैं।
पचेरियर

2
@ Pacerier तरीके से बनाया गया !? कीबोर्ड और / या माउस के साथ विंडोज एक्सप्लोरर को नेविगेट करने की तरह? डेस्कटॉप पर आइकन का उपयोग करना (मान लें कि रीसायकल बिन को डेस्कटॉप पर भी प्रदर्शित किया गया है)? जिसमें से न तो op का सवाल हल करना। मुझे वास्तव में लगता है कि बिन खाली करने के लिए कहीं न कहीं एक कमांड है, जैसे इतिहास को हटाना RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1लेकिन मुझे यह नहीं मिला। तो, अगर आपके पास एक अंतर्निहित तरीका है, तो कृपया इसे साझा करें!
kodbrown

1
@Pacerier: सबसे पहले आप यह सुझाव देते हैं कि इस समाधान में समाधान की तरह खामियां RD /S [/Q]हैं - जो @wasatchwizard परीक्षण द्वारा मना कर दिया गया है - फिर RD /S [/Q]अचानक वही समाधान बेहतर है, क्योंकि यह "अंतर्निहित" है। उसका क्या अर्थ निकलता है? RD /S [/Q]समस्याओं का वर्णन किया है @Synetech। यह समाधान नहीं करता है।
zb226

15

nircmd आपको वह लिख कर देता है

nircmd.exe emptybin

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


1
धन्यवाद मुझे जरूरत है कि जब मैं अपने रीसायकल और खिड़कियों में एक बहुत कुछ था खाली खुराक पर क्लिक करता है धन्यवाद काम नहीं करता।
शरीफ

@shareef टिप्पणी के लिए धन्यवाद :)
राहुल

11

आप एक पॉवरशेल स्क्रिप्ट का उपयोग कर सकते हैं (यह फ़ोल्डर पुनर्निर्देशन वाले उपयोगकर्ताओं के लिए काम करता है और साथ ही उनके रीसायकल डिब्बे को स्टोरेज स्टोरेज सिस्टम में नहीं रखना है)

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

उपरोक्त लिपि यहाँ से ली गई है

यदि आपके पास विंडोज़ 10 और पॉवरशेल 5 है तो Clear-RecycleBinकमांडलेट है

Clear-RecycleBinपुष्टि के बिना PowerShell के अंदर उपयोग करने के लिए , आप उपयोग कर सकते हैं Clear-RecycleBin -Force। आधिकारिक दस्तावेज यहां देखे जा सकते हैं


3
Clear RecycleBin विंडोज़ 10 में PowerShell में उपयोगी है
जिन

Clear-RecycleBinसफलतापूर्वक रीसायकल बिन में कुछ विकृत फ़ोल्डर नामों को हटा दिया गया है जिन्हें मैं अन्यथा नहीं हटा सकता।
एस। तारिक inetin


5

मुझे पता है कि मुझे पार्टी में थोड़ी देर हो गई है, लेकिन मुझे लगा कि मैं अपने विषय को और अधिक सुंदर समाधान में योगदान दे सकता हूं।

मैं एक ऐसी स्क्रिप्ट की तलाश कर रहा था, जो फाइल सिस्टम से सभी फाइलों और फ़ोल्डरों को क्रूडली डिलीट करने के बजाय एक रीसायकल बिन को एपीआई कॉल से खाली कर दे। मेरे प्रयासों में विफल होने के बाद RecycleBinObject.InvokeVerb("Empty Recycle &Bin")(जो कि जाहिरा तौर पर केवल XP या पुराने में काम करता है), मैं SHEmptyRecycleBin()एक संकलित भाषा से कॉल किए गए shell32.dll में एम्बेडेड फ़ंक्शन का उपयोग करने की चर्चा पर ठोकर खाई । मैंने सोचा, अरे, मैं ऐसा कर सकता हूं पावरशेल में और इसे एक बैच स्क्रिप्ट हाइब्रिड में लपेटता हूं।

इसे .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

बैच / पॉवरशेल्ड कैमेरा तकनीक (+1) का बहुत अच्छा सुधार। क्या iexआपका विचार आपके लिए है? (btw यह संकलित exe की आवश्यकता के बिना msbuild इनलाइन कार्यों के साथ बैच फ़ाइल में सी # कोड एम्बेड करने के लिए संभव है)
npocmaka

@npocmaka धन्यवाद! मुझे लगता है कि कई अन्य लोगों ने iexइस तरह से उपयोग किया है । मैं भूल जाता हूं कि मैंने कहां उठाया था जो ${%~f0}इसके बराबर है gc "%~f0"। यह बिल्ली थी जिसने मुझे चालू किया out-string। क्या आप msbuild के साथ बैच स्क्रिप्ट में C # एम्बेड करने का एक उदाहरण जोड़ सकते हैं? मेरा Google-fu आज कमजोर है।
रोजो

1
यहाँ - dostips.com/forum/… - हालाँकि आप कमांड लाइन के तर्कों को सीधे पास नहीं कर सकते हैं - आपको उन तर्कों के साथ एक चर को परिभाषित करना होगा जो बाद में c # भाग से निकाले जा सकते हैं
npocmaka

और ऊपर के उदाहरण में .net संस्करण पैराट्राइज्ड नहीं है।
npocmaka

4

जबकि

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

सिस्टम ड्राइव से $ RECYCLE.BIN फ़ोल्डर को हटा देगा, जो आमतौर पर c :, है, इसे किसी भी अन्य उपलब्ध विभाजन से हटाने पर विचार करना चाहिए क्योंकि स्थानीय और बाहरी ड्राइव में किसी भी विभाजन में $ RECYCLE.BIN फ़ोल्डर छिपा हुआ है (लेकिन इसमें नहीं USB फ्लैश ड्राइव की तरह हटाने योग्य ड्राइव, जिसमें $ RECYCLE.BIN फ़ोल्डर नहीं है)। उदाहरण के लिए, मैंने d :, में एक प्रोग्राम स्थापित किया, ताकि रीसायकल बिन I में चले जाने वाली फ़ाइलों को हटाने के लिए:

rd / s /qd :\$RECYCLE.BIN

कमांड लाइन से खाली रिसाइकल बिन में सुपर यूजर पर उपलब्ध अधिक जानकारी


अहह मैं यह जानने की कोशिश कर रहा हूं कि ऊपर दिए गए सुझाव काम क्यों नहीं करते। च निर्दिष्ट करना: खदान के लिए यह काम किया। आपका बहुत बहुत धन्यवाद! <३
फिल

4

मैं इस पॉलीशेल ऑनलाइनर का उपयोग करता हूं:

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

C :, से भिन्न ड्राइव के लिए भी काम करता है


3

मैं बिन रीसायकल बिन खाली करने के लिए एक बैच फ़ाइल में इन आदेशों का उपयोग करता हूं:

del /q /s %systemdrive%\$Recycle.bin\*
for /d %%x in (%systemdrive%\$Recycle.bin\*) do @rd /s /q "%%x"

2

हां, आप निम्न कोड के साथ एक बैच फ़ाइल बना सकते हैं:

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

यह मूल रूप से एक पॉवरशेल स्क्रिप्ट बनाता है जो ट्रैश को \ डेस्कटॉप निर्देशिका में खाली करता है, फिर इसे चलाता है।


0

सभी उत्तर रास्ते बहुत जटिल हैं। ओपी ने सीएमडी से ऐसा करने का अनुरोध किया।

यहाँ आप (cmd फ़ाइल से) जाएं:

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

और हां, यह एक्सप्लोरर में अपडेट होगा।


0

लाइन के साथ cmd फ़ाइल बनाएँ:

for %%p 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 "%%p:\$Recycle.Bin" rundll32.exe advpack.dll,DelNodeRunDLL32 "%%p:\$Recycle.Bin"

0

आप इस PowerShell कमांड का उपयोग कर सकते हैं।

Clear-RecycleBin -Force

नोट : यदि आप एक पुष्टिकरण संकेत चाहते हैं, -Force ध्वज को हटा दें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.