सवाल विंडोज़ में मास हटाने फाइलें


मेरे पास एक निर्देशिका है, जिसमें Windows 2008 सर्वर पर कुछ उपनिर्देशिकाओं में ~ 3 मिलियन फ़ाइलें हैं। रूट डीआईआर पर SHIFT + DEL के माध्यम से फ़ाइलों को मैन्युअल रूप से हटाने से उम्र लगती है। क्या इसमें कोई हटाने का कोई अन्य तरीका है और तेज तौर तरीका?


130
2017-08-07 07:00


मूल


स्टैक ओवरफ़्लो पर यहां भी पूछा गया: stackoverflow.com/questions/186737/... - Hugo
मैं चुंबक को केवल कुछ उपनिर्देशिकाओं को कैसे लक्षित कर सकता हूं? - Jaime Hablutzel
@ जैम एक स्थिर हाथी के साथ, एक असली प्रोग्रामर की तरह ... ;-) xkcd.com/378 - Legionair
क्या होगा यदि यह एक एसएसडी ड्राइव है? - Benjamin Weiss


जवाब:


मुझे नियमित रूप से WinXP एन्क्रिप्टेड ड्राइव से कई फ़ाइलों और निर्देशिकाओं को हटाने की आवश्यकता होती है, आमतौर पर 45,000 फ़ोल्डर्स में लगभग 22 जीबी 500,000 फाइलें।

विंडोज एक्सप्लोरर के साथ हटाना बकवास है क्योंकि यह फाइलों की गणना करने में बहुत समय बर्बाद करता है। मैं आमतौर पर उन चीज़ों को स्थानांतरित करता हूं जिन्हें मुझे सी: \ stufftodelete में हटाने की आवश्यकता होती है और एक deletestuff.bat बैच फ़ाइल है rmdir /s/q C:\stufftodelete। यह रात में चलने के लिए निर्धारित है, लेकिन कभी-कभी मुझे इसे दिन के दौरान चलाने की ज़रूरत होती है ताकि जल्दी बेहतर हो।

303 फ़ोल्डर्स में 960 फाइलों के छोटे 5.85 एमबी नमूने के त्वरित समय परीक्षण के परिणाम यहां दिए गए हैं। मैंने विधि 2 के बाद विधि 1 चलाया, फिर परीक्षण निर्देशिका को रीसेट करें।

विधि 1 एक पास में फ़ाइलों और निर्देशिका संरचना को हटा देता है:

rmdir /s/q foldername

विधि 2 में प्रत्येक गायक फ़ाइल के लिए स्क्रीन पर लिखने के ऊपरी हिस्से से बचने के लिए फ़ाइलों और आउटपुट को हटाने के लिए पहला पास होता है। एक दूसरा पास फिर शेष निर्देशिका संरचना को साफ़ करता है:

del /f/s/q foldername > nul
rmdir /s/q foldername
  • विधि 1: 17.5, 14.9, 13.9, 14.8, 13.8s: औसत 14.98 सेकेंड
  • विधि 2: 14.3, 12.1, 11.7, 14.2, 11.8s: औसत 12.82 सेकेंड

3,243 फ़ोल्डरों में 404 एमबी की 1 9 5521 फाइलों का उपयोग करके एक और परीक्षण के परिणाम यहां दिए गए हैं:

  • विधि 1: 2 मिनट 20 सेकंड
  • विधि 2: 2 मिनट 33 सेकंड

तो इसमें बहुत कुछ नहीं है, शायद एक ही परीक्षण पर न्यायाधीश के करीब है।


संपादित करें: मैंने बहुत अधिक डेटा के साथ पुन: प्रयास किया है, यह मेरे लिए एक सामान्य मामला है: 146,918 फ़ोल्डर्स में 28.3 जीबी 1,15 9,211 फाइलें:

  • विधि 1: 2 एच 15 मीटर, 2 एच 34 मीटर: औसत: 2 घंटे 25 मिनट
  • विधि 2: 4 9 मीटर, 57 मीटर: औसत: 53 मिनट

वाह, विधि 2 विधि 1 की तुलना में लगभग तीन गुना तेजी से है! मैं अपना deletestuff.bat अद्यतन कर रहा हूँ!


168
2018-05-27 11:27



यदि आप एक पूर्ण पथ निर्दिष्ट करते हैं तो आरडी / एस / क्यू महान काम करता है लेकिन यह सापेक्ष पथों के साथ काम नहीं करता है। क्या कोई समाधान है? - Michael S.
@ ह्यूगो: ह्यूगो, एक प्रश्न: उपर्युक्त समय परीक्षणों में, दोनों या दोनों विधियों के लिए, क्या आपने विधि चलाने से पहले फ़ाइलों को तुरंत गिन लिया था? मैं पूछ रहा हूं क्योंकि फ़ोल्डर सामग्री पहले से ही ओएस फ़ाइल कैश में हो सकती है। धन्यवाद! - William C
@ विलियम सी: मुझे बिल्कुल याद नहीं है, लेकिन एक ही सामग्री के साथ दोहराए गए हटाए जाने के लिए मैं केवल एक ही डिलीट से पहले गिना होगा, और इसे अन्य डिलीटों के लिए दोहराया नहीं जाएगा (जैसा कि मुझे पहले से ही संख्याएं पता थीं)। - Hugo
क्या आपके समय में 1,15 9, 1111 फाइलों को 146, 9 18 फ़ोल्डर्स में ले जाना शामिल है C:\stufftodelete फ़ोल्डर? - martineau
@ मार्टिनौ: नहीं, परीक्षण समय (अगर मुझे सही याद है) फ़ोल्डर्स को जगह में हटा रहे थे। फ़ोल्डर में स्थानांतरित करना आमतौर पर तेज़ होता है C:\stufftodelete`. Copying is slooow, but you don't want that. If you have another drive (eg E:), also create ई: \ stufftodelete` और हमेशा फ़ाइलों को उसी ड्राइव के फ़ोल्डर में ले जाएं और इसे deletestuff.bat में शामिल करें (जो अगली बार अंत में फ़ोल्डर्स को पुन: प्रयास करता है)। - Hugo


यदि आपको नियमित रूप से बड़ी निर्देशिका पेड़ को हटाना है, तो उस निर्देशिका पेड़ की जड़ को एक अलग विभाजन पर संग्रहीत करने पर विचार करें, फिर जब भी आपको सबकुछ हटाने की आवश्यकता हो तो इसे त्वरित रूप से प्रारूपित करें। अगर आपको इसे स्वचालित करने की आवश्यकता है, तो आप इस डॉस कमांड का उपयोग कर सकते हैं:

echo Y | format Z: /FS:NTFS /X /Q

जहां ज़ेड: आपका 'अस्थिर' विभाजन है। नोट: विभाजन में कोई लेबल नहीं होना चाहिए। मैंने इसके बारे में ब्लॉग किया यहाँ


16
2017-10-31 06:37



और डिस्क और निर्देशिका के बीच कनेक्शन बनाने के लिए हार्डलिंक का उपयोग करें, जहां सटीक निर्देशिका पथ की आवश्यकता होती है, तो फ़ाइलों को संग्रहीत किया जाता है। - Nime Cloud
@NimeCloud: हार्डलिंक्स फाइल सिस्टम या लिंक निर्देशिका को पार नहीं कर सकता है। - grawity
हालांकि, प्रतीकात्मक लिंक कर सकते हैं क्रॉस फाइल सिस्टम और लिंक निर्देशिकाएं, इसलिए वे यहां उपयुक्त हो सकते हैं। Mklink कमांड देखें (Vista और बाद में; अन्यथा मार्क Russinovich / SysInternals से जंक्शन का उपयोग करें।) - Robert Calhoun


कमांड प्रॉम्प्ट में (स्टार्ट -> रन -> cmd):

del /f /s /q foldername 

9
2017-08-07 07:07



यह बहुत अच्छा है क्योंकि यह सूचीबद्ध करता है कि यह क्या हटा रहा है .. लेकिन यह गति के संदर्भ में rd के समान है। - bobobobo
ओह वाह वाह वाह वाह। जैसा मैंने सोचा उतना अच्छा नहीं है। यह फ़ाइलों को जल्दी से हटा देता है लेकिन निर्देशिका पेड़ को बरकरार रखता है। - bobobobo
जो मैं जोड़ सकता हूं वह rd का उपयोग करके साफ़ करने में काफी लंबा समय लगता है। - bobobobo
@bobobobo मैंने ~ 30GB / 1,000,000 फ़ाइलों / 15,000 फ़ोल्डर्स के साथ कुछ परीक्षण किए हैं और डेल + rd सिर्फ तीसरे से तीन गुना तेज है: superuser.com/questions/19762/mass-deleting-files-in-windows/... - Hugo
मुझे लगता है कि आरएमडीआईआर कुछ स्थितियों में तेजी से है। डेल । / f / s / q अच्छा है क्योंकि आप निर्देशिका में सभी फ़ाइलों की सामग्री को भी हटा सकते हैं। आपके समाप्त होने के बाद, यह केवल उन फ़ोल्डरों को हटाने का मामला है जो पर्याप्त तेज़ हैं। इसके अलावा, attrib -s -h -r याद रखें । / एस अगर आप छिपी हुई फाइलों के कारण फ़ोल्डर को हटा नहीं सकते हैं। - Sun


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

एक ही इंस्टॉलर x64 संस्करण स्थापित करता है लेकिन इसका उपयोग करने के लिए आपको इसे मैन्युअल रूप से मजबूर करना होगा।

बीटा जो मैं स्थिर संस्करणों पर अनुशंसा करता हूं: http://blog.codesector.com/2010/09/22/teracopy-2-2-beta-3/


6
2018-05-25 14:00



क्या आपने कभी टेराकोपी बनाम आरएमडीआईआर या डेल या डेल + आरएमडीआईआर की तरह कुछ समय की तुलना की है या देखा है? - Hugo
@ हूगो: बेवकूफ सवाल। मैं टेराकोपी की सिफारिश नहीं करता अगर यह सादे आंखों से देखा जा सकता है तो यह तेज़ है! - rautamiekka
तो क्या आप अनुमान लगाते हैं कि यह 10% तेज है? तेजी से दो बार? तेजी से दस गुना? दस लाख गुना तेजी से? यह बहुत अच्छा होगा अगर आप इसे दो बड़े और समान परीक्षण सेटों के साथ आरएमडीआईआर के खिलाफ समय दे सकते हैं। - Hugo
@ ह्यूगो: फ़ाइल आकार / गिनती और विखंडन और सीपीयू के आधार पर, 2x से 5x पर निर्भर करता है लेकिन आम तौर पर एक पल या 20 सहेजने पर फ़ाइलों के बड़े और / या पागलपन के लिए विन-एकीकृत माध्यमों का उपयोग करने पर विचार करने के लिए बहुत तेज़ है। [पुनः संपादित प्रवेश के आकस्मिक हिट के बाद] - rautamiekka
धन्यवाद! मैं वर्षों से टेराकोपी का उपयोग कर रहा हूं, लेकिन बड़े पैमाने पर हटाने के फ़ंक्शन के बारे में कभी नहीं जानता था। और तुम सही हो, यह बहुत तेज है! - AzDayton


मैंने एक बल्लेबाजी फाइल की जो वही करता है।

@echo off
echo --------------------WARNING--------------------
echo folder "%~1" will be deleted
echo --------------------WARNING--------------------
pause
echo Deleting folder: "%~1".
time /T
del /f/s/q "%~1" >nul
rmdir /s/q "%~1" >nul
echo Done.
time /T
echo --- Taking ownership.
takeown /f "%~1" /r /d y >nul
icacls "%~1" /reset /t >nul
icacls "%~1" /setowner "%username%" /t >nul
echo Done all.
time /T

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


इसे कैसे उपयोग करे। पथ पथ में delfolder.bat के रूप में सहेजें (उदाहरण के लिए c: \ windows), फिर इसे चलाएं

 delfolder "foldername"   

जहां फ़ोल्डर नाम फ़ोल्डर का नाम है

मेरे परीक्षण में, 123'000 फ़ाइलों को हटाने में 3 मिनट (सता 7200 आरपीएम) लिया गया। वाह!


5
2018-02-09 17:35



यह छोटी लिपि अद्भुत है। धन्यवाद। - Jeson Martajaya
आमतौर पर आपको उपयोग नहीं करना चाहिए %1 एक लिपि में, लेकिन "%~1"। इस तरह, यदि तर्क उद्धरण के साथ पारित किया गया है, तो इसे अस्वीकार कर दिया गया है और आवश्यक है। यदि यह उद्धरण के साथ पारित नहीं किया गया है, तो यह उद्धृत किया गया है। - Benoit


उपयोग rd / s कमांड कमांड प्रॉम्प्ट से।


3
2017-08-07 07:09



नहीं। यह एक्सप्लोरर से हटने जितना धीमा है। - bobobobo
ठीक है, ठीक है। वैसे भी डेल / एफ / एस / क्यू से बेहतर काम करता है। - bobobobo
खैर, यह वास्तव में हटाने के लिए एक्सप्लोरर का उपयोग करने से बहुत बेहतर है। यह हटाना जारी रहता है, भले ही कोई डिलीट या दो असफल हो जाए (जहां एक्सप्लोरर चोक और एबॉर्ट्स) - bobobobo


नीचे दिए गए कोड का उपयोग आमतौर पर मेरे लिए अच्छा काम करता है।

mkdir empty_dir
robocopy empty_dir dir_to_wipe /mir /r:0 /w:0 /e
rmdir empty_dir dir_to_wipe

3
2017-12-23 15:47



उस रोबोकॉपी कॉल के अंत में '> nul` जोड़ें ताकि आपको इसे ऑनस्क्रीन नहीं देखना पड़े। - JoshDM
यह उपयोग के समान है rsync लिनक्स में यह तब भी तेज़ है rmdir? - Hastur
एफवाईआई, यह रोबोकॉपी बहुत अलग है del /f/q/s + rmdir /s/q। यदि आपके dir_to_wipe में जंकशन हैं c:\some_important_dir आप अपना डेटा खो देंगे। - Pavel


सबसे अच्छा व्यावहारिक समाधान शायद फ़ोल्डर को कहीं से बाहर ले जाने के लिए है (उदा। रीसायकल बिन) और फिर इसे हटाना शुरू करें। इसमें उम्र लगेगी, लेकिन कम से कम यह रास्ते से बाहर हो जाएगा।

मुझे पूरा यकीन है कि उन सभी फ़ाइलों को हटाने के लिए आवश्यक समय कार्य की अंतर्निहित आवश्यकता है, हटाने के कार्यान्वयन में अक्षमता नहीं है।


1
2017-10-06 21:59





इंस्टॉल करें Cygwin और उपयोग करें आरएम-आर। लेकिन यह अधिक होने की संभावना है।


1
2017-10-06 23:45



ऐसा इसलिए है ठीक ठीक बराबर rd /q /s ... - Joey
बहुत अधिक कार्य, और लगभग बराबर गति! - adeelx
यह कई अन्य इंस्टॉल-टूल-एक्स-एंड-यूज से भी बदतर नहीं है-यह यहां जवाब देता है, और यदि वे नहीं हैं तो उन्हें वोट नहीं दिया जाना चाहिए। - JdeBP
साइगविन है rm वास्तव में cmd.exe buildin के रूप में तेजी से rd? चूंकि पॉज़िक्स इंटरफेस का सिग्विन इम्यूलेशन धीमा है क्योंकि इसे कुछ अतिरिक्त काम करने की आवश्यकता है rm वास्तव में सराहना नहीं करता है। - Jan Hudec
फ़ाइलों को हटाने के लिए बड़े संग्रह की प्रतीक्षा करते समय मेरे पास सिगविन स्थापित करने और कोशिश करने के लिए पर्याप्त समय था rm -rf। मैं लगभग 10 मिनट में निरस्त हो गया और वापस चला गया del /f/s/q क्योंकि सिग्विन के तहत, डिस्क का उपयोग केवल 50% था। के अंतर्गत del, डिस्क उपयोग 100% पर pegged है। तो मुझे लगता है कि यह तेजी से हटाना चाहिए। दोनों तरीकों के लिए सीपीयू उपयोग <1% है। मुझे फ़ाइल नंबर पर यकीन नहीं है क्योंकि मैंने 10 मिनट की गणना करने के बाद विंडोज फ़ाइल डिलीटर बंद कर दिया था। - Derek Ziemba


क्या आपके पास लघु फ़ाइल नाम जनरेशन सक्षम है? यदि हां, तो क्या आपको वास्तव में इसकी आवश्यकता है? फ़ाइल को निकालना केवल मेटाडाटा ओपेरियन है। तो यदि आपके पास हटाने के लिए नामों की संख्या दोगुनी हो गई है, तो काम की मात्रा काफी अधिक है।


1
2018-05-31 12:40