Cmd कॉल द्वारा किसी फ़ोल्डर में सभी फ़ाइलों और फ़ोल्डरों को कैसे हटाएं


89

मैं विंडोज का उपयोग करता हूं।

मैं सिस्टम कॉल द्वारा एक फ़ोल्डर में सभी फ़ाइलों और फ़ोल्डरों को हटाना चाहता हूं।

मैं इस तरह से कॉल कर सकता हूं:

>rd /s /q c:\destination
>md c:\destination

क्या आप एक आसान तरीका जानते हैं?



जवाबों:


137

नहीं, मैं एक नहीं जानता।

यदि आप किसी कारण के लिए मूल निर्देशिका (एसीएल, और सी।) को बनाए रखना चाहते हैं, और इसके बजाय वास्तव में इसे खाली करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:

del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"

यह पहले निर्देशिका से सभी फ़ाइलों को हटाता है, और फिर पुन: सभी नेस्टेड निर्देशिकाओं को निकालता है, लेकिन कुल मिलाकर शीर्ष-स्तरीय निर्देशिका को बनाए रखते हुए (अपनी सामग्री को छोड़कर)।

ध्यान दें कि एक बैच फ़ाइल के %भीतर आपको forलूप के भीतर दोगुना करने की आवश्यकता है :

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"

3
मैं एक बैच फ़ाइल के बिना यह करने में सक्षम था। दोनों परिचालन को सम्‍मिलित करने के लिए && का उपयोग करें
मैट ब्रूखूइस

1
मैं एक पूर्ण विंडोज़-शेल नोब हूं: मैं इस उदाहरण के साथ एक पथ पर गंतव्य कैसे तय करूं?
लो_रेंट्स

आप शब्द destinationको रास्ते से प्रतिस्थापित करते हैं , संभवत: यदि आवश्यक हो तो पूरी बात के उद्धरण का उपयोग कर।
जॉय

4
यह उत्तर मुझे दुखी करता है, क्योंकि यह सबसे अच्छा उत्तर है
केसीडी

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

39

del c:\destination\*.* /s /qमेरे लिए काम किया। मुझे उम्मीद है कि आपके लिए भी काम करेगा।


13
सभी फ़ाइलों को हटाता है, लेकिन फ़ोल्डरों को नहीं।
एरिक

2
मेरे लिए क्या काम फ़ोल्डर में नेविगेट किया गया था। (शिफ्ट राईट क्लिक करें, यहाँ ओपन cmd प्रॉम्प्ट का चयन करें)del *.*
डैनियल एल। वनडेनबॉश

उदाहरण के लिए रिश्तेदार पथdel "../../server/front-end\*.*"
FindOutIslamNow

@ DanielL.VanDenBosch, यह बहुत स्क्रिप्ट योग्य नहीं है।
21

29

मुझे लगता है कि यह करने का सबसे आसान तरीका है:

rmdir /s /q "C:\FolderToNotToDelete\"

पथ में अंतिम "\" महत्वपूर्ण हिस्सा है।


27
इससे फोल्डर भी डिलीट हो जाता है।
आर्ची

बिल्कुल सही, यह वही है जो मुझे चाहिए :)
gNerb

क्या यह पुनरावर्ती रूप से कार्य करता है यह बहुत लंबा रास्ता क्या है?
इयॉमरॉफ

2
इसके साथ संयोजन mkdir C:\FolderToNotToDeleteमेरे लिए पर्याप्त था :)
qbolec

1
यह समस्याग्रस्त हो सकता है यदि आपका पैरेंट फ़ोल्डर (जो इस तरह से डिलीट हो जाता है) कुछ महत्वपूर्ण अनुमतियाँ रखता है, जिसे अब आपको पुनः बनाने की आवश्यकता है ...
Mladen B.

15

हाँ! शक्तियों का उपयोग करें:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"

बहुत बुरा PowerShell एक बोझिल, फूला हुआ, बहुत धीमा जानवर है। : - |
21

13

यदि सबफ़ोल्डर नामों में रिक्त स्थान हो सकते हैं, तो आपको बच गए उद्धरणों में उन्हें घेरना होगा। निम्न उदाहरण बैच फ़ाइल में उपयोग किए गए आदेशों के लिए यह दिखाता है।

set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"

6

फ़ाइल हटाने के लिए:

del PATH_TO_FILE

इसमें सभी फ़ाइलों के साथ फ़ोल्डर को हटाने के लिए:

rmdir /s /q PATH_TO_FOLDER

विशिष्ट फ़ोल्डर से सभी फ़ाइलों को हटाने के लिए (फ़ोल्डर को स्वयं नहीं हटाना) थोड़ा जटिल है। del /s *.*फ़ोल्डरों को हटा नहीं सकता, लेकिन सभी सबफ़ोल्डर से फ़ाइलों को हटा देता है। तो दो आज्ञाओं की आवश्यकता है:

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"

आप इस तरह से (फ़ोल्डर या फ़ाइल) जो चाहें उसे हटाने के लिए एक स्क्रिप्ट बना सकते हैं mydel.bat:

@echo off
setlocal enableextensions

if "%~1"=="" (
    echo Usage: %0 path
    exit /b 1
)

:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1

:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%

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

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder

1

एक आसान एक-लाइन विकल्प आपके फ़ाइल सिस्टम पर कहीं एक खाली निर्देशिका बनाना है, और फिर सभी फ़ाइलों को हटाने के लिए स्विच के साथ ROBOCOPY( http://technet.microsoft.com/en-us/library/cc733145.aspx ) का उपयोग /MIRकरें और सबफ़ोल्डर्स। डिफ़ॉल्ट रूप से, रोबोकॉपी सुरक्षा की प्रतिलिपि नहीं बनाती है, इसलिए आपके रूट फ़ोल्डर में एसीएल बरकरार रहना चाहिए।

इसके अलावा शायद रिट्री स्विच के लिए एक मूल्य निर्धारित करना चाहते हैं /r, क्योंकि रिट्रीट की डिफ़ॉल्ट संख्या 1 मिलियन है।

robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3

0

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

for /d in (*) do rd /s /q "%a" & (
md "%a")

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


0

मूल निर्देशिका पर नेविगेट करें

लाइन 1 पुशड "पैरेंट डायरेक्टरी"

उप फ़ोल्डर हटाएँ

लाइन 2 आरडी / एस / क्यू। 2> nul

/superuser/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-prompt


1
यदि आप उपयोग करते pushdहैं तो आपको popdभी उपयोग करना होगा । दुर्भाग्य से, popdजब आप निर्देशिका को हटाते हैं तो यह काम नहीं करता है। तो, आपको cdइसके बजाय करना होगा pushd
xmedeko

0

यह 2 सरल कदम उठाता है। [/ q का अर्थ है शांत, / f का अर्थ है मजबूर, / s का अर्थ है सबदिर]

  1. निकालने के लिए निर्देशिका को खाली करें

    del *.* /f/s/q  
    
  2. निर्देशिका निकालें

    cd ..
    rmdir dir_name /q/s
    

तस्वीर देखो


0

इसे आज़माएं, यह सब रूट रूट के तहत सभी MyFolder को खोजेगा और MyFolder नाम के सभी फ़ोल्डरों को हटा देगा

for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.