"Rm -rf" विंडोज के लिए बराबर है?


508

मुझे एक फ़ोल्डर और उसके बच्चों को फिर से हटाने का एक तरीका चाहिए।

क्या इसके लिए कोई पूर्वनिर्मित उपकरण है, या क्या मुझे एक लिखने की आवश्यकता है?

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

DELTREE विंडोज 2000+ से हटा दिया गया था


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

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

31
क्या यह वास्तव format c:में लिनक्स की स्थापना नहीं है ? मैं मजाक कर रहा हूं।
बेसिल स्टारीनेवविच

जवाबों:


694

RMDIR या RD यदि आप क्लासिक कमांड प्रॉम्प्ट (cmd.exe) का उपयोग कर रहे हैं:

rd /s /q "path"

RMDIR [/ S] [/ Q] [ड्राइव:] पथ

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

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

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

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

rd -r "path"

84
यह इंगित करने योग्य है कि बड़ी संख्या में फ़ाइलों के लिए, rmdir / s / q आमतौर पर एक्सप्लोरर में "सिलेक्ट डायर, शिफ्ट + डिलीट" ऑपरेशन की तुलना में काफी तेज है।
वेज

9
यह फाइलों को डिलीट नहीं करता है, जैसे rm -rf करता है, और जब डायरेक्टरी मौजूद नहीं होती है, तो यह नॉन-जीरो वैल्यू भी देता है, इसलिए rd /s /q foo && echo "yay"फेल होने पर डायरेक्टरी "फू" मौजूद नहीं होती है।
डिर्क ग्रोनेवल्ड

17
क्या होगा अगर dir खाली नहीं है और कुछ फाइलें मिलती हैं Access is deniedऔर अन्य The process cannot access the file because it is being used by another process?
यूजीन

6
मैंने अभी सात में यह कोशिश की है और आपको करने की जरूरत है / एस और / क्यू (कैप्स)
ford प्रीफेक्ट

2
यहां पर रहस्योद्घाटन हुआ। मुझे पता है कि मैंने इस कमांड की कोशिश की थी और यह काम नहीं किया अगर डायरेक्टरी ट्री में फाइलें होतीं; अब मैं वापस जाता हूं और । । जादुई रूप से यह काम करने लगता है। किसी और को इस के साथ असंगत व्यवहार का अनुभव करता है ?!
एलेक्स हॉल

139

व्यवस्थापक:

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

एसआईएस फाइलों सहित किसी भी चीज के लिए काम करता है

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

mkdir \empty
robocopy /mir \empty folder

3
मेरे हीरो! और एक टिप: आप C: \ खाली में अपना खाली फ़ोल्डर बनाते हैं, फिर एक बार प्रत्येक पागल फ़ोल्डर के अंदर, एक बस कर सकते हैंrobocopy /mir c:\empty .
Léon Pelletier

takeownमुझे मदद की के रूप में मैं गलती से rsync के साथ लिनक्स सिस्टम से फ़ोल्डर की नकल की और मुझे लगता है कि फ़ोल्डर को निकालने का कोई विशेषाधिकार था ... भी नहीं robocopy काम किया। धन्यवाद
Jarda

1
बहुत अच्छा जवाब। यह काम करता हैं। (पेज पर अन्य सभी उत्तर नहीं हैं)। लेकिन cacls को हटा दिया गया है। क्या समसामयिक उत्तर देना संभव है, कृपया। दूसरा संस्करण पहले से ही काम कर रहा है और पदावनत नहीं है।
गंगनुस

यह मेरे लिए कुछ नहीं करता है। किसी को समझा सकता है कि यह कैसे काम करने वाला है? (robocopy) - यह फ़ोल्डर की सामग्री हटा सकते हैं, लेकिन खुद को नहीं फ़ोल्डर
राल्फ

114

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

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

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

  • /Q चुप मोड, एक पेड़ के साथ एक निर्देशिका को हटाने के लिए ठीक नहीं है /S


13
पैरामीटर स्पष्टीकरण के लिए धन्यवाद। स्वीकृत उत्तर ऐसा नहीं करता है, दुर्भाग्य से।
थॉमस

1
सवाल का सरलतम, सटीक उत्तर। स्वीकार किया जाना चाहिए।
Artif3x

19

आप साइबरविन स्थापित कर सकते हैं, जिसमें आदि rmभी है ls


19

पथ पर जाएं और इस कमांड को ट्रिगर करें।

rd /s /q "FOLDER_NAME"

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

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

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


9

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

if exist myfolder ( rmdir /s/q myfolder )


6

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

yarn global add rimraf

फिर, उदाहरण के लिए, एक पैटर्न जिसका मैं लगातार उपयोग करता हूं:

rimraf .\**\node_modules

या एक-लाइनर के लिए जो आपको वैश्विक इंस्टॉल को चकमा देता है, लेकिन जो पैकेज डायनेमिक डाउनलोड के लिए थोड़ा अधिक समय लेता है:

npx rimraf .\**\node_modules

2
समस्या का एक ठोस समाधान है जैसा कि यह OS-agnostic है।
डेनियलोस

5

इस आदेश का प्रयास करें:

del /s foldername

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


4

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

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:

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

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

पहले 0 पर सेट ERRORLEVELकरें और उसके बाद ही पथ को हटाएं यदि यह मौजूद है, तो यह एक निर्देशिका के आधार पर अलग-अलग आदेशों का उपयोग कर रहा है। यदि पथ मौजूद नहीं है, तो 0 पर IF EXISTसेट ERRORLEVELनहीं होता है, इसलिए ERRORLEVELसामान्य rm -rfउपयोग की नकल करने वाले तरीके से सफलता का ठीक से पता लगाने के लिए 0 पर सेट करना आवश्यक है । के 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%

बिंदु, सब कुछ सरल है जब पर्यावरण बस पोसिक्स के अनुरूप होता है। या यदि आप एक न्यूनतम MSYS स्थापित करते हैं और बस उसी का उपयोग करते हैं।



3

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

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

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"

बस! अब आप किसी भी निर्देशिका को राइट क्लिक कर सकते हैं और RMDIR फ़ंक्शन का उपयोग कर सकते हैं


3

Powershell 5.1 का उपयोग करना

 get-childitem *logs* -path .\ -directory -recurse | remove-item -confirm:$false -recurse -force

उस निर्देशिका नाम से लॉग को बदलें जिसे आप हटाना चाहते हैं।

गेट-चाइल्डिटम बच्चों की निर्देशिका के लिए खोज करता है, जिसका नाम वर्तमान पथ () से पुनरावर्ती है।

हटाने-आइटम परिणाम को हटाता है।


2

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


2

अपने जोखिम पार इस्तेमाल करें। जानकारी 'के रूप में' प्रदान की है। परीक्षण नहीं किया गया है।

राइट-क्लिक करें विंडोज आइकन (आमतौर पर नीचे बाएं)> "विंडोज पॉवरशेल (एडमिन)" पर क्लिक करें> इस कमांड का उपयोग करें (उचित देखभाल के साथ, यदि आप सावधान नहीं हैं तो आप आसानी से अपनी सभी फाइलें हटा सकते हैं):

rd -r -include *.* -force somedir

somedirगैर-रिक्त निर्देशिका को आप कहाँ निकालना चाहते हैं।

ध्यान दें कि बाहरी संलग्न डिस्क के साथ, या मुद्दों के साथ डिस्क, विंडोज कभी-कभी अजीब व्यवहार करता है - यह हटाने (या किसी भी प्रतिलिपि प्रयास) में त्रुटि नहीं करता है, फिर भी निर्देश के अनुसार निर्देशिका को हटाया नहीं गया है (या कॉपी नहीं किया गया है)। (मैंने पाया कि इस मामले में, कम से कम मेरे लिए, उनके जवाब में @n_y द्वारा दिया गया आदेश 'गेट-चाइल्डिटेम: फ़ाइल या निर्देशिका दूषित और अपठनीय है।' पॉवरशेल के परिणामस्वरूप त्रुटि उत्पन्न करेगा।


1

देर लेकिन महत्वपूर्ण उत्तर किसी को जो स्थापित करने मुसीबतों चल रहा है करने के लिए NPM विंडोज़ मशीन पर संकुल और यदि आप कह "त्रुटि दिखाई देती rm -rf..." कमांड नहीं मिला। आप बैश क्लि का उपयोग कर सकते हैं विंडो पर rm कमांड चलाने के का ।

npm उपयोगकर्ताओं के लिए, आप npm के कॉन्फ़िगरेशन को npm config set script-shell "C:\Program Files\Git\bin\bash.exe"इस तरह से बदल सकते हैं यदि आप जिस npm पैकेज को स्थापित करने का प्रयास कर रहे हैं उसमें एक पोस्ट इंस्टॉल स्क्रिप्ट है जो rm -rfकमांड का उपयोग करता है , तो आप rmnpm पैकेज में कुछ भी बदलने या अक्षम करने की आवश्यकता के बिना उस कमांड को चलाने में सक्षम होंगे। पोस्ट स्क्रिप्ट कॉन्फ़िगर स्थापित करें। (उदाहरण के लिए, उनकी पोस्ट इंस्टॉल स्क्रिप्ट में कमांड styled-componentsका उपयोग करता है rm)

यदि आप केवल rmकमांड का उपयोग करना चाहते हैं , तो आप आसानी से बैश का उपयोग कर सकते हैं और तर्क पास कर सकते हैं।

तो हाँ, आप विंडोज़ पर 'आरएम' कमांड का उपयोग कर सकते हैं।


0

यहाँ मेरे लिए क्या काम किया गया है:

बस पथ की लंबाई कम करने का प्रयास करें। यानी :: सभी फ़ोल्डरों का नाम बदलें जो इस तरह की फाइल को छोटे से छोटे संभावित नामों तक ले जाते हैं। एक अक्षर के नाम कहें। फ़ोल्डर पदानुक्रम में ऊपर की ओर नाम बदलने पर जाएं। इस यू द्वारा प्रभावी रूप से पथ की लंबाई कम हो जाती है। अब अंत में सीधे फाइल को हटाने की कोशिश करें।



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