क्या हुआ कभी deltree, और क्या इसकी जगह है?


81

MS-DOS के पुराने संस्करणों में - मैं 7 संस्करण कहना चाहता हूं, लेकिन मैं गलत हो सकता है - एक deltreeकमांड थी, जिसने किसी दिए गए पथ से सभी उपनिर्देशिकाओं और फ़ाइलों को पुन: हटा दिया।

deltreeअब मौजूद नहीं है, लेकिन delएक पेड़ को हटाने की क्षमता विरासत में नहीं मिली। del /sफ़ाइलें हटाता है, लेकिन फ़ोल्डर्स नहीं।

आप आसानी से (यानी, एक कमांड में) एक बैच फ़ाइल से एक पेड़ कैसे हटा सकते हैं?


2
डेल्ट्री को 5.0 संस्करण में पेश किया गया था (मुझे अभी भी इसका इस्तेमाल करने में सक्षम होने का उल्लास याद है) - मैन मैं बूढ़ा महसूस करता हूं।
मार्क डी

जवाबों:


90

जैसा कि दूसरों ने उल्लेख किया है, rdकमांड में /sउप-निर्देशिकाओं को फिर से हटाने के लिए स्विच है। आप इसे /qस्विच के साथ जोड़ सकते हैं ताकि जबरन एक उप-निर्देशिका (और इसकी सामग्री) को हटा दिया जा सके

rd /s /q c:\foobar

प्रत्येक व्यक्ति जो याद कर रहा है, rdवह एक सटीक प्रतिस्थापन नहीं है जैसा कि deltreeप्रतीत होता है ( लगभग ) Googling द्वारा लौटाए गए प्रत्येक पृष्ठ windows deltreeपर आपको विश्वास होगा। deltreeआदेश दोनों निर्देशिका के लिए काम किया और फ़ाइलों , यह एक एकल सुविधाजनक, सभी उद्देश्य विलोपन आदेश बना रही है। यह दोनों मान्य हैं:

deltree /y c:\foobar
deltree /y c:\baz.txt

हालांकि rd(आश्चर्यजनक रूप से नहीं) केवल निर्देशिकाओं के लिए काम करता है । जैसे कि इनमें से केवल पहला कमांड मान्य है जबकि दूसरा देता है और एरर देता है और फाइल को अन-डिलीट कर देता है:

rd /s /q c:\foobar
rd /s /q c:\baz.txt

इसके अलावा, delकमांड केवल फाइलों के लिए काम करती है, निर्देशिकाओं के लिए नहीं, इसलिए केवल दूसरी कमांड मान्य होती है, जबकि पहले एक त्रुटि देती है:

del /f /q c:\foobar
del /f /q c:\baz.txt

फ़ाइलों और निर्देशिकाओं को हटाने का कोई अंतर्निहित तरीका नहीं है जैसा कि किया जा सकता है deltree। उपयोग करना rdऔर delव्यक्तिगत रूप से सर्वोत्तम रूप से असुविधाजनक है क्योंकि इसमें यह भेद करने की आवश्यकता है कि क्या फ़ाइल-सिस्टम ऑब्जेक्ट (फ़ाइल / फ़ोल्डर-नाम) एक फ़ाइल या निर्देशिका है जो हमेशा संभव या व्यावहारिक नहीं है।

आप deltreeपिछले ओएस से कमांड को कॉपी कर सकते हैं , हालांकि यह केवल विंडोज के 32-बिट संस्करणों पर काम करेगा क्योंकि यह 16-बिट डॉस कमांड (यहां तक ​​कि विंडोज 9x में) है।

एक अन्य विकल्प बैच-फ़ाइल बनाना है जो दोनों को कॉल करता है delऔर rd; कुछ इस तरह:

::deltree.bat

@echo off
rd  %* 2> nul
del %* 2> nul

आप इसे इस प्रकार कहेंगे:

deltree.bat /s /q /f c:\foobar
deltree.bat /s /q /f c:\baz.txt

यह दोनों rdऔर del, तर्कों में गुजरता है और nulइस त्रुटि से बचने के लिए आउटपुट को पुनर्निर्देशित करता है कि उनमें से एक हमेशा के लिए निकल जाएगा।

आप शायद मानकों को समायोजित या सरल बनाने के लिए व्यवहार को अनुकूलित करना चाहेंगे या त्रुटि संदेशों की अनुमति देंगे, लेकिन फिर भी, यह आदर्श नहीं है और इसके लिए प्रत्यक्ष प्रतिस्थापन नहीं है deltree

एक विकल्प एक तृतीय-पक्ष उपकरण प्राप्त करना है, हालांकि खोज-क्वेरी-क्राफ्टिंग में एक वास्तविक अभ्यास है।


2
@ टॉबी एलेन, "आरएम"? क्या आपका मतलब rd था ? यदि ऐसा है, तो आपको सहायता पाठ को फिर से पढ़ने की आवश्यकता है; यह कहता है कि निर्देशिका के अलावा निर्दिष्ट निर्देशिका में सभी निर्देशिकाओं और फ़ाइलों को हटाता है। एक निर्देशिका पेड़ को हटाने के लिए उपयोग किया जाता है। जैसा मैंने कहा, यह फ़ाइलों को नहीं हटाता है। यदि आप इसका उपयोग इस प्रकार करते हैं: rd /s foobar.txtयदि आप निश्चित हैं, तो यह आपको संकेत देगा, और यदि आप हाँ कहते हैं (या /qस्विच का उपयोग करते हैं ), तो यह त्रुटि देता हैThe directory name is invalid.
Synetech

आप वास्तव में एक निर्देशिका (इसके उपनिर्देशिका सहित) के तहत सब कुछ निकाल सकते हैं RMDIR /S, इसलिए यह कहना कि एक ही झटके में दोनों फ़ाइलों और फ़ोल्डरों को हटाने का कोई तरीका नहीं है, वास्तव में गलत है।
vapcguy

@vapcguy, rd /sकेवल निर्देशिका पर लागू होता है , न कि इसके अंदर की फाइलें । इसमें फ़ाइलों को हटाने के लिए, आपको rdनिर्देशिका पर ही उपयोग करना होगा। उदाहरण के लिए, आप यह नहीं कह सकते हैं rd c:\target\foobar.txt, आपको उपयोग करना होगा rd /s c:\target, लेकिन आप निर्देशिका को केवल अपनी सामग्री से हटाना नहीं चाह सकते। deltreeऐसा कर सकता था, लेकिन निर्देशिका को भी हटा rd /sनहीं सकता rd /sथा।
21

नोटिस मैंने कहा RMDIR /S- नहीं rd /s। लेकिन फिर भी rd, अगर निर्देशिका चली गई है, तो फ़ाइलों को कैसे हटाया नहीं जाता है? यहां तक ​​कि अगर वे नहीं थे, तो फ़ाइलें प्रभावी रूप से अनाथ हो जाती हैं और सिस्टम द्वारा कचरा एकत्र किया जाना चाहिए। और यहां तक ​​कि अगर ऐसा नहीं हुआ, तो यह निश्चित रूप से होता है यदि आप निर्देशिका को फिर से बनाते हैं-तो आप जादुई रूप से अपनी फ़ाइलों की सूची दोबारा प्राप्त नहीं करते हैं। पॉइंटर्स को अनिवार्य रूप से हटा दिया जाता है। तो क्या आप कह रहे हैं कि आप कभी भी उस स्थान को वापस नहीं पा सकते हैं, क्योंकि आप कभी भी उन फ़ाइलों को हटाने में सक्षम नहीं होते हैं, यदि आप उपयोग करते हैं rd /s? मुझे यकीन नहीं है कि मुझे विश्वास है कि यह एक भयानक बग होगा। पॉइंट फाइल्स डिलीट करना है।
vapcguy

आप अपने "दस्तावेज़" "परीक्षण" कहा जाता फ़ोल्डर में एक निर्देशिका बनाने हैं, तो एक परीक्षण पाठ दस्तावेज़ वहाँ Windows में, तो करीब Explorer विंडो, एक कमांड लाइन के लिए जाना बनाने के लिए, cd Documents, rd /s test, अपने निर्देशिका और अपने पाठ फ़ाइल निकाल दिया जाएगा। rmdir /s testकाम करता है, भी। आप कभी भी उपयोग करने की कोशिश नहीं rd /s C:\Users\me\Documents\test\test.txtकरेंगे - यह बिल्कुल बेवकूफी होगी। लेकिन आप कर सकते हैं और निर्देशिका पर कमांड का उपयोग कर सकते हैं, न कि केवल फ़ाइल नाम पर। लेकिन डायरेक्टरी को हटाकर आप फाइलों को हटा सकते हैं।
vapcguy

43

इसे कमांडों से बदल दिया गया था: आरएमडीआईआर या आरडी

/ S के साथ सभी उपनिर्देशिकाओं को हटा दें

/ क्यू के साथ चुपचाप इसका उपयोग करें

उदाहरण:

RMDIR /S /Q Folder2Delete
RD /S /Q Folder2Delete

प्रलेखन:


3
"RMDIR / S / Q।" प्रभावी रूप से वर्तमान निर्देशिका और इसके तहत सब कुछ मिटा देता है। हां, यह वर्तमान निर्देशिका को हटाने में सक्षम नहीं होने के बारे में शिकायत करता है, जो उपयोगी हो सकता है। बस यह सुनिश्चित करें कि आप इसे चलाते समय सही निर्देशिका में हों! :)
मम्म

9

उदासीन महसूस करते हुए, मैंने अपना deltree.exe लिखा। यह निर्देशिका और फ़ाइलों दोनों के साथ काम करता है, और गति के लिए SHFileOperation () का उपयोग करता है।

https://github.com/ai7/toolbox/tree/master/deltree

deltree v1.01 [Mar 27 2015, 16:31:02] (gcc 4.9.1)

Usage: deltree [options] <path> ...

Options:
  -y    yes, suppresses prompting for confirmation
  -s    silent, do not display any progress dialog
  -n    do nothing, simulate the operation
  -f    force, no prompting/silent (for rm compatibility)
  -r    ignored (for rm compatibility)

Delete directories and all the subdirectories and files in it.

यह वाइल्डकार्ड लेता है और आप इसे यूनिक्स rm की तरह उपयोग कर सकते हैं:

deltree -rf *


5

आजकल, आप पॉवरशेल का उपयोग उसी कार्य को करने के लिए कर सकते हैं:

powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"

दुर्भाग्य से पावरशेल फूला हुआ और धीमा है। : - \ _ मुझे इससे नफरत है जब कंपनियां उपयोगकर्ताओं को अपने नवीनतम कबाड़ में "अपग्रेड" करने के लिए मजबूर करने की कोशिश करती हैं। 😒
Synetech

4
$ सहायता आर.डी.
एक निर्देशिका को हटाता है (हटाता है)।

RMDIR [/ S] [/ Q] [ड्राइव:] पथ
आरडी [/ एस] [/ क्यू] [ड्राइव:] पथ

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

    / क्यू शांत मोड, यह मत पूछो कि क्या ओ / एस के साथ एक निर्देशिका पेड़ को हटाने के लिए ठीक है

2

असल में आधुनिक विंडोज ऑपरेटिंग सिस्टम में RMDIR और RD कमांड एक ही कमांड में Win 98 की RD और Deltree दोनों कमांड को मर्ज करते हैं। यह एक आंतरिक कमांड है, इसीलिए आपको कोई RD.exe और RMDIR.exe नहीं मिलेगा।

यह लिखकर "आरडी /?" डबल qoutes बिना cmd में आपको वही मिलेगा जो आप चाहते हैं।


0

एक निर्देशिका को हटाने के लिए और यह सभी सामग्री पुनरावर्ती है

rd /s MY_DOOMED_DIR

0

इसे इस्तेमाल करो:

cd (your directory here)
del *.* /f /s /q

2
क्या आप झंडे के लिए एक संक्षिप्त विवरण जोड़ सकते हैं? इससे यह उत्तर और भी अधिक मूल्यवान होगा। धन्यवाद।
rsjaffe

इसका उल्लेख पहले से ही स्वीकृत उत्तर में किया गया है ।
मेलेबियस

0

सभी फ़ाइलों और उपनिर्देशिकाओं को हटा दें

cd /d Directory && rd /s /q .\

आपका उत्तर अन्य उत्तर (कुछ 10 वर्ष पुराना है) की एक प्रति प्रतीत होता है। मैं किसी भी अधिक या बेहतर स्पष्टीकरण या किसी अन्य लाभ नहीं देख सकते हैं
जेब

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