विंडोज में बड़ी मात्रा में फ़ाइलों को हटाना धीमा है


34

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

क्या विंडोज में एक फ़ोल्डर को हटाने का एक तरीका है और इसके भीतर फाइलों की संख्या के लिए आनुपातिक समय नहीं है?


2
और वह
ह्यूगो

जवाबों:


60

क्या विंडोज में एक फ़ोल्डर को हटाने का एक तरीका है और इसके भीतर फाइलों की संख्या के लिए आनुपातिक समय नहीं है?

मुझे ऐसा नहीं लगता, लेकिन कुछ तरीके स्पष्ट रूप से दूसरों की तुलना में बहुत जल्दी हैं।

सबसे खराब तरीका रीसायकल बिन को भेजना है: आपको अभी भी उन्हें हटाने की आवश्यकता है। अगली सबसे खराब है विंडोज एक्सप्लोरर के साथ शिफ्ट + डिलीट करना: यह किसी भी चीज को हटाने से पहले सामग्री की जांच करने में समय का भार बर्बाद करता है।

अगला सबसे अच्छा rmdir /s/q foldernameकमांड लाइन से उपयोग करना है। del /f/s/q foldernameबहुत अच्छा है, लेकिन यह निर्देशिका संरचना को पीछे छोड़ देता है।

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

del /f/s/q foldername > nul
rmdir /s/q foldername

यह एक सिंगल rmdir से लगभग तीन गुना तेज है, ~ 30GB / 1,000,000 फ़ाइलों / 15,000 फ़ोल्डरों को हटाने वाली Windows XP एन्क्रिप्टेड डिस्क के साथ समय परीक्षण के आधार पर: rmdir~ 2.5 घंटे del+rmdirलगते हैं , ~ 53 मिनट लगते हैं। अधिक जानकारी यहाँ

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


शामिल करने के लिए Upvote> nul
Nuktu

1
विंडोज एक पुराने एसडीके के बैकअप से कई हजारों फाइलों को स्कैन करने के लिए मुझे इंतजार करने वाला था। कम से कम एक घंटा लगने वाला था, मेरे मामले में 10 मिनट लग सकते हैं। मैंने इसे दोहराने के उपयोग के लिए एक बैट फ़ाइल में डाल दिया है: gist.github.com/DavidEdwards/61d4d336232284b33b237b04da5bfe10
Knossos


1

क्या विंडोज में एक फ़ोल्डर को हटाने का एक तरीका है और इसके भीतर फाइलों की संख्या के लिए आनुपातिक समय नहीं है?

खैर, हाँ, विभाजन को स्वरूपित। मैं थोड़ा हैरान हूं कि पिछले 9 वर्षों में किसी ने सुझाव नहीं दिया।

यह बहुत कट्टरपंथी है, लेकिन अगर आप एक विशिष्ट फ़ोल्डर के लिए अक्सर ऐसा करने की आशा है, यह इसके लिए एक अलग विभाजन बनाने सार्थक हो सकता है।


यदि वह बहुत कट्टरपंथी है, तो दूसरे जवाब आपकी एकमात्र उम्मीद हैं। सर्वरफॉल्ट पर क्यों एक अच्छी व्याख्या है । यह linux और XFS फाइलसिस्टम के लिए है, लेकिन यहाँ एक ही तर्क लागू होता है। आप बिल्ड-इन OS फ़ंक्शन पर बहुत सुधार नहीं कर सकते।

हालाँकि, यदि आप उन सभी फ़ाइलों के पथ को जानते हैं जिन्हें आप हटाना चाहते हैं, तो आप डायरेक्ट कॉन्टेंट को कॉल करने वाली कॉल को बचा सकते हैं और कुछ ओवरहेड को बचाते हुए सीधे कॉल हटा सकते हैं। फिर भी फ़ाइलों की संख्या हालांकि के लिए आनुपातिक।

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

import tqdm
import sys
import os

location = sys.argv[1]
directory = os.fsencode(location)

with os.scandir(directory) as it:
    for dir_entry in tqdm.tqdm(it):
        try:
            os.remove(dir_entry.path)
        except OSError:
            pass  # was not a file

250 फ़ाइलों के बारे में यह हटाए गए / मेरी 12 साल की SEAGATE ST3250620NS पर है। मुझे लगता है कि यह आपके ड्राइव पर बहुत तेज होगा।

हालांकि, इस बिंदु पर यह सिर्फ सूक्ष्म अनुकूलन है, तो बहुत ज्यादा काम नहीं चलेगा जब तक आप एक निर्देशिका में फ़ाइलों के लाखों लोगों की है। (मेरी तरह, योग्य, मैंने डी क्या किया है :)



0

सुनिश्चित करें कि आप क्लाउड पर फ़ाइलों का बैकअप नहीं ले रहे हैं और उन्हें उसी समय हटाने की कोशिश कर रहे हैं!

कई क्लाउड बैकअप समाधान के साथ फ़ाइलें, जबकि वे ऊपर का समर्थन किया जा रहा है लॉक हो जाएगा और फिर आप उन्हें बैकअप लिया जाना अभी के लिए इंतजार करना पड़ता है।

यदि आप एक अस्थायी निर्देशिका (या ऐसा कुछ जिसे बैक अप की आवश्यकता नहीं है) के साथ यह समस्या हो रही है तो सुनिश्चित करें कि आपके बैकअप सेट में अस्थायी निर्देशिका का चयन नहीं किया गया है।


0

मैंने पाया है कि निर्देशिकाओं की कई परतों वाले फ़ोल्डर विंडो को जल्दी हटाने की क्षमता को धीमा कर देते हैं। मैं एक परियोजना पर काम कर रहा था, जहां यह 5 स्तरों ले लिया node_modules फ़ोल्डर है, जो हमेशा से हटाने के लिए एक जानवर है करने के लिए, यहां तक ​​कि साथ

del /f/s/q foldername > nul
rmdir /s/q foldername

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

एक बार जब मेरी गहरी निर्देशिका खाली है, मैं कुछ स्तर ऊपर जाने के लिए और एक ही बात करते हैं। यह हटाता है कि मुझे बस कुछ ही मिनटों के लिए एक घंटे से अधिक ले लिया है नीचे में कटौती की है।

इसकी एक बहुत ही मैन्युअल प्रक्रिया है और संभवत: इसे कुछ सफलता के साथ लिपिबद्ध किया जा सकता है, लेकिन इसके लिए मेरे लिए क्या काम किया है


0

मैंने एनबीएम परियोजनाओं को हटाने के दौरान उपयोग की जाने वाली .bat फ़ाइल बनाने के लिए ह्यूगो के मूल उत्तर का उपयोग किया। मैंने एक पथ चर जोड़ा और केवल एक बार पथ को कॉपी और पेस्ट करना होगा। डबल .bat फ़ाइल पर डबल-क्लिक करें और यह सभी काम करता है - सब कुछ टाइप करने की आवश्यकता नहीं है।

set path="FOLDER_PATH"
del /f/s/q %path% > nul
rmdir /s/q %path%

उदाहरण का उपयोग:

set path="C:\Projects\My React Project"
del /f/s/q %path% > nul
rmdir /s/q %path%

-2

क्या आपने कमांड प्रॉम्प्ट का उपयोग करने का प्रयास किया था

rmdir /s /q foldername

GUI में सभी बड़े फ़ाइल ऑपरेशन धीमे होते हैं - ज्यादातर क्योंकि दृश्य प्रतिक्रिया (प्रगति बार) को कई बार फिर से रद्द करना पड़ता है


5
यह बकवास है। ऑपरेशन धीमा हो सकता है क्योंकि GUI को आवश्यक समय का अनुमान लगाने के लिए सभी फ़ाइलों को गिनने की आवश्यकता है लेकिन पुनरावृत्ति के कारण नहीं।
बेंडर

लगातार बड़े फ़ोल्डरों के साथ गलत ... मैं काम (ज्यादातर win2k सर्वर), और उपयोग TotalCommander स्थानांतरित / कॉपी / हटाने सामान के लिए। मैंने देखा है कि अगर मैं टीसी को कम करता हूं या टीसी सामान के ऊपर एक और एप्लिकेशन विंडो डालता हूं तो कम से कम 50% तेजी से काम हो जाता है। टीसी अभी भी विरल सामान को दोहरा रहा है, लेकिन सब कुछ कंपोज करने में नजरअंदाज किया जाता है ...
nEJC

6
आपके कंप्यूटर इतनी धीमी गति से कि जीयूआई संचालन प्रभाव डिस्क मैं / हे प्रदर्शन है? या TotalCommander सिर्फ अविश्वसनीय रूप से खराब कोडित है? डिस्क सीपीयू, रैम और वीडियो कार्ड की तुलना में धीमी सैकड़ों या हजारों गुना है। ग्राफिक्स अपनी डिस्क लेखन धीमा रहे हैं, तो आप प्रमुख मुद्दे हैं।
श्री चमकदार और नई安宇

1
एक कारण के लिए प्रश्न में "फाइलों की संख्या के लिए आनुपातिक समय नहीं होने" था। मैं 50% तेजी से नहीं देख रहा हूँ।
सिंदरी Traustason

@ सिंदरी यदि आप इसे कमांड प्रॉम्प्ट करते हैं तो सिस्टम को अपना जादू चलाने से पहले लगभग कोई देरी नहीं करनी चाहिए। जहां तक ​​मैं समझता हूं यह प्रीप्रोसेसिंग है जहां आपकी समस्या है।
nEJC
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.