2008-09-18 8 views
266

मुझे किसी फ़ोल्डर और उसके बच्चों को दोबारा हटाने का एक तरीका चाहिए, क्या इसके लिए एक प्रीबिल्ट टूल है, या मुझे एक लिखने की ज़रूरत है?आरएम-आरएफ समकक्ष?

DEL/S निर्देशिका को हटा नहीं देता है।

deltree विंडोज 2000 + से

+0

डेल/एस (क) सब पर काम नहीं है (यह कुछ संस्करणों में ही उपलब्ध है) या (ख) छोड़ करता है शीर्ष-स्तरीय निर्देशिका लेकिन इसके तहत सबकुछ हटाएं या (सी) सभी फ़ाइलों को हटाते समय सभी निर्देशिकाएं छोड़ दें? – wnoise

+0

@Aaron, उत्तर सी, आपको निर्देशिकाओं और फ़ाइलों को हटाने के लिए rmdir/s का उपयोग करने की आवश्यकता है। – Wedge

+19

क्या यह वास्तव में 'प्रारूप c:' नहीं है तो लिनक्स की स्थापना? मैं निश्चित रूप से मजाक कर रहा हूँ। –

उत्तर

392

RMDIR या आरडी क्लासिक कमांड प्रॉम्प्ट (cmd.exe):

rd /s /q "path" 

क्या आप PowerShell उपयोग कर रहे हैं का उपयोग कर सकते Remove-Item (जो del, erase, rd, ri, rm और rmdir पर एलियास है) और एक -Recurse तर्क यह है कि -r

rd -r "path" 
+53

यह इंगित करने लायक है कि बड़ी संख्या में फाइलों के लिए, आरएमडीआईआर/एस/क्यू आमतौर पर एक्सप्लोरर में "चयन डीआईआर, शिफ्ट + डिलीट" ऑपरेशन के बराबर काफी तेज है। – Wedge

+1

निर्देशिका नामों से मेल खाने के लिए झंडे का उपयोग करने के बारे में कैसे? अगर मैं foo \ के अंतर्गत सभी निर्देशिकाओं को छोड़ना चाहता हूं, तो 'rmdir/s/q foo \ * 'वाक्यविन्यास गलत के लिए एक त्रुटि देता है। –

+8

यह आरएम-आरएफ की तरह फ़ाइलों को हटा नहीं देता है, और जब निर्देशिका मौजूद नहीं है, तो यह गैर-शून्य मान भी लौटाता है, इसलिए 'rd/s/q foo && echo "yay" निर्देशिका में विफल हो जाएगा " foo "मौजूद नहीं है। –

2

हटा दिया गया था rmdir/एस dirname

2

इस आदेश का प्रयास करें: यदि आप उपयोग कर रहे हैं

+0

संयोजन w/rmdir/s/q संयोजन में मेरे लिए काम किया क्योंकि कुछ फाइलें लॉक थीं और आरएमडीआईआर उन पर असफल हो जाएगी। डेल/फ़ोल्डनेम ने लॉक की गई फाइलों को नियुक्त किया, जिसके बाद आरएमडीआईआर को रूट डीआईआर से छुटकारा पाने की इजाजत दी गई। अच्छा लगा। – bbqchickenrobot

4

को शॉर्ट की जा सकती हैं rmdir /S /Q %DIRNAME%

61

RMDIR [/S] [/Q] [drive:]path

RD [/S] [/Q] [drive:]path

  • /S निर्देशिका खुद के अलावा निर्दिष्ट निर्देशिका में सभी निर्देशिकाओं और फ़ाइलों को निकालता है। एक निर्देशिका पेड़ को हटाने के लिए प्रयुक्त।

  • /Q शांत मोड, /S

+4

धन्यवाद। स्वीकृत उत्तर यह दुर्भाग्य से ऐसा नहीं करता है। – Thomas

13

के साथ एक निर्देशिका वृक्ष हटाने का आग्रह नहीं करते हैं तो ठीक है आप cygwin, जो rm है और साथ ही ls आदि स्थापित कर सकते हैं

0

नहीं है यदि आप विंडोज़ के पुराने संस्करण पर हैं तो भी deltree।

मैं वास्तव में खोजने आदेश के लिए इस साइट की तरह: SS64: Del - Delete Files

97

व्यवस्थापक:

takeown /r /f folder 
cacls folder /c /G "ADMINNAME":F /T 
rmdir /s folder 

sys फ़ाइलों

सहित कुछ भी के लिए काम करता है

संपादित करें: मैं वास्तव में सबसे अच्छा तरीका है जो भी फ़ाइल को हल करती है पाया पथ बहुत लंबी समस्या भी है:

mkdir \empty 
robocopy /mir \empty folder 
+2

यह एकमात्र चीज है जो मेरे लिए काम करने वाली फाइल के बाद काम कर रही थी क्योंकि मैंने कुछ किया था (बेवकूफ मुझे: पी) बहुत बहुत धन्यवाद! –

+2

वाह अच्छी चाल, कभी नहीं देखा 'robocopy' – jbnunn

+0

चाल का एक अच्छा सेट! धन्यवाद! – Konrads

2

आप GnuWin32 इंस्टॉल कर सकते हैं और विंडोज़ पर मूल रूप से * nix कमांड का उपयोग कर सकते हैं।विंडोज़ की एक छोटी ताजा प्रतिलिपि पर कुछ और स्थापित करने से पहले मैं इसे स्थापित करता हूं। :)

2

यहाँ आप क्या करने की जरूरत है ...

निम्न पंक्ति के साथ एक बैच फ़ाइल बनाएँ

RMDIR /S %1

Remove.bat के रूप में अपने बैच फ़ाइल सहेजें और C:\windows

में रख

निम्न रजिस्ट्री कुंजी बनाएँ

HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)

लॉन्च regedit और अद्यतन डिफ़ॉल्ट निम्नलिखित मूल्य के साथ मूल्य HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)\default

"c:\windows\REMOVE.bat" "%1"

यह Thats! अब आप किसी भी निर्देशिका पर क्लिक करें और RMDIR समारोह

0
यहाँ

क्या मेरे लिए काम किया है का उपयोग कर सकते हैं:

बस पथ की लंबाई कम करके देखें। i.e :: उन सभी फ़ोल्डर्स का नाम बदलें जो ऐसी फ़ाइल को सबसे छोटे संभावित नामों तक ले जाते हैं। एक अक्षर नाम कहो। फ़ोल्डर पदानुक्रम में ऊपर नामकरण पर जाएं। इससे आप प्रभावी रूप से पथ की लंबाई को कम कर देते हैं। अब अंत में फ़ाइल को तुरंत हटाने का प्रयास करें।

1

पहले, आइए की समीक्षा क्या rm -rf करता है:

  1. निर्दिष्ट पथ मौजूद नहीं है:

    C:\Users\ohnob\things>touch stuff.txt 
    
    C:\Users\ohnob\things>rm -rf stuff.txt 
    
    C:\Users\ohnob\things>mkdir stuff.txt 
    
    C:\Users\ohnob\things>rm -rf stuff.txt 
    
    C:\Users\ohnob\things>ls -l 
    total 0 
    
    C:\Users\ohnob\things>rm -rf stuff.txt 
    

    तीन परिदृश्य होंगे जहां rm -rf आमतौर पर इस्तेमाल किया जाता है, जहां यह 0 लौटने की उम्मीद है रहे हैं।

  2. निर्दिष्ट पथ मौजूद है और एक निर्देशिका है।
  3. निर्दिष्ट पथ मौजूद है और एक फ़ाइल है।

मैं पूरी अनुमति चीज़ों को अनदेखा करने जा रहा हूं, लेकिन कोई भी अनुमतियों का उपयोग नहीं करता है या विंडोज़ में चीजों पर खुद को लिखने से इनकार करने का प्रयास करता है (ठीक है, यह एक मजाक है ...)।

पहले set ERRORLEVEL to 0 और फिर यह केवल तभी हटाएं जब यह अस्तित्व में है, विभिन्न आदेशों का उपयोग करके यह एक निर्देशिका है या नहीं। IF EXISTERRORLEVEL से 0 सेट नहीं करता है, यदि पथ मौजूद नहीं है, तो ERRORLEVEL से 0 को पहले सेट करना उचित है ताकि सामान्य rm -rf उपयोग की नकल करने के तरीके में सफलता का पता लगाना आवश्यक हो। RD की देखभाल IF EXIST के साथ आवश्यक है क्योंकि RD, rm -f के विपरीत, यदि कोई लक्ष्य मौजूद नहीं है तो कोई त्रुटि फेंक देगी।

निम्न स्क्रिप्ट स्निपेट मानता है कि DELPATH प्रीक्वॉट किया गया है। (यह सुरक्षित है जब आप SET DELPATH=%1 जैसे कुछ करते हैं। ECHO %1 को .cmd में डालने का प्रयास करें और इसे रिक्त स्थान के साथ तर्क दें और देखें कि आपके लिए क्या होता है)। स्निपेट पूरा होने के बाद, आप IF ERRORLEVEL 1 के साथ विफलता की जांच कर सकते हैं।

: # Determine whether we need to invoke DEL or RD or do nothing. 
SET DELPATH_DELMETHOD=RD 
PUSHD %DELPATH% 2>NUL 
IF ERRORLEVEL 1 (SET DELPATH_DELMETHOD=DEL) ELSE (POPD) 
IF NOT EXIST %DELPATH% SET DELPATH_DELMETHOD=NOOP 
: # Reset ERRORLEVEL so that the last command which 
: # otherwise set it does not cause us to falsely detect 
: # failure. 
CMD /C EXIT 0 
IF %DELPATH_DELMETHOD%==DEL DEL /Q %DELPATH% 
IF %DELPATH_DELMETHOD%==RD RD /S /Q %DELPATH% 

प्वाइंट यह है कि पर्यावरण बस पॉज़िक्स के अनुरूप होने पर सब कुछ आसान होता है। या यदि आप न्यूनतम एमएसवाईएस स्थापित करते हैं और बस इसका इस्तेमाल करते हैं।

0

डेल/एस/q पथ पर जाएं

+2

कुछ विवरण/स्पष्टीकरण जोड़ने का प्रयास करें। –

8

directorytobedeleted और यह आदेश ट्रिगर।

rd /s /q "FOLDER_NAME" 

/एस: निर्दिष्ट निर्देशिका और सभी उपनिर्देशिकाओं को किसी भी फाइल सहित हटा देता है। एक पेड़ को हटाने के लिए उपयोग करें।

/q: शांत मोड में rmdir चलाता है। पुष्टि के बिना निर्देशिका हटा देता है।

/? : कमांड प्रॉम्प्ट पर मदद प्रदर्शित करता है।

3

एक निर्देशिका (या नहीं, वह मौजूद है) को हटाने के लिए निम्नलिखित का उपयोग करें:

if exist myfolder (rmdir /s/q myfolder) 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^