मैं कमांड प्रॉम्प्ट के माध्यम से किसी दिए गए फ़ोल्डर में सभी फ़ाइलों / सबफ़ोल्डरों को कैसे हटा सकता हूं?


42

मैं विंडोज 7 में एक बैच फ़ाइल में सभी फ़ाइलों और सबफ़ोल्डर्स को हटाना और शीर्ष फ़ोल्डर को रखना चाहूंगा। मूल रूप से फ़ोल्डर खाली करना। उसके लिए कमांड लाइन निर्देश क्या है?


3
नाइटपिक के लिए नहीं, लेकिन आप यह देख रहे हैं कि यह "कमांड प्रॉम्प्ट" से कैसे करें "डॉस" से नहीं। विन मी के बाद से डॉस सबसिस्टम नहीं हुआ है।
एमडीमैरा

@MarkM: खैर, वहाँ है / ntvdmलेकिन 64-बिट सिस्टम के रूप में बाजार में हिस्सेदारी बढ़ रही है यह लगातार अप्रासंगिक हो रही है।
जॉय

जवाबों:


55

आप इसका उपयोग कर सकते हैं delऔर /Sध्वज (सभी उपनिर्देशिकाओं से सभी फ़ाइलों को हटाने के लिए इसे बताने के लिए):

del /S C:\Path\to\directory\*

2
तुम्हारा बेहतर है: डी +1 - मेरे जवाब को नष्ट कर दिया
रक्तपीलिया

3
व्याख्या: डिलीट के लिए डेल का मतलब है और एस का मतलब रिकर्सिव है।
तमारा विज्समैन

3
@Tony_Henrich, यहाँ msdos कमांड के बारे में और जानें। computerhope.com/msdos.htm
Moab

3
और उपयोग / क्यू खाली उप फ़ोल्डर्स रखता है जो अवांछनीय है।
टोनी_ हेनरिक

3
यह गलत उत्तर है और मुझे नहीं पता कि इसे कई वोट क्यों मिले। ऐसा लगता है कि लोगों ने सवाल को पूरी तरह से नहीं समझा और टिप्पणी नहीं पढ़ी! मैं उत्तरों के माध्यम से जाऊंगा और सही का चयन करूंगा।
टोनी_ हेनरिक

22

सबसे अच्छा समाधान: उदाहरण के लिए, मैं सभी फ़ाइलों को हटाना चाहता हूं और मूल निर्देशिका के उप-निर्देशिकाओं को "C: \ Users \ Desktop \ New फ़ोल्डर \" कहने देता है। आसान तरीका तीन कमांड के नीचे बैच फ़ाइल बनाना है।

cd C: \ Users \ Desktop \ New फ़ोल्डर \

डेल * / एस / क्यू

rmdir / S / Q "C: \ Users \ Desktop \ New फ़ोल्डर \"

यहां पहले यह सभी उप-निर्देशिकाओं में सभी फ़ाइलों को साफ करेगा और फिर सभी खाली उप-निर्देशिकाओं को साफ करेगा। चूंकि वर्तमान वर्किंग डायरेक्टरी पैरेंट डायरेक्टरी है अर्थात "\ New फोल्डर", rmdir कमांड इस डाइरेक्टरी को स्वयं डिलीट नहीं कर सकता है।


1
बहुत अच्छी तरह से काम करता है, एक चेतावनी को छोड़कर जब सिस्टम रूट फ़ोल्डर को हटा नहीं सकता है।
जेरथ

2
अच्छा नही। कठिन कोडित पथ और इसे देखकर, यह फ़ोल्डर को खाली नहीं करता है। इसे दूर करता है। बहुत खतरनाक भी। यदि पथ से बाहर नहीं जाता है या गलत तरीके से चलता है तो यह वर्तमान फ़ोल्डर में फ़ाइलों को हटा देता है।
टोनी_ हेनरिक

1
जैसा कि @Tony_Henrich ने कहा कि rmdirकमांड हट जाएगीNew folder
नुक्तु

नहीं। यह वास्तव में फ़ोल्डर को हटाने के बिना "नया फ़ोल्डर" पूरी तरह से साफ करने पर काम करता है। एकमात्र मुद्दा यह है कि जब ओएस मूल फ़ोल्डर को हटाने में विफल रहता है तो यह एक छोटी सी चेतावनी देता है। इसके अलावा, डेल कमांड बेमानी है जब तक आपके पास एक बड़ा फ़ोल्डर नहीं है, इस मामले में यह तेज हो सकता है। आप इसे केवल इस रूप में संशोधित कर सकते हैं (क्षमा करें, टिप्पणियों में पंक्ति विराम की कमी के बारे में): FOLDER = "% userprofile% \ Desktop \ New फ़ोल्डर" cd% FOLDER% rmdir / S / Q% FOLDER%>> nul 2> और 1 सेट करें
HSuke

3
असली खतरनाक। यदि कोई आगे बढ़ता है और `C: \ Users \ Desktop \ New फ़ोल्डर` का नाम बदल देता / हटाता है, तो CD के साथ पहली पहली पंक्ति विफल हो जाती है और आपकी बैच फ़ाइल खुशी से वर्तमान (डिफ़ॉल्ट) निर्देशिका में सब कुछ हटा देती है। जो आपकी वर्किंग डायरेक्टरी या C: \ Windows \ System32
Ishmeel

9

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

pushd "Parent Directory"

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

rd /s /q . 2>nul

1
वाह, यह हैकिश है। :)
तर्ने कालेन

1
यह अनिवार्य रूप से दो पिछले उत्तरों के बराबर है।
स्कॉट

ऊपर से सहमत - यह पिछले उत्तरों की एक प्रति है, जिन्हें वे प्रतिस्थापित कर रहे हैं के पर्यायवाची के साथ प्रतिस्थापित किया गया है। pushdयहाँ कुछ भी नहीं जोड़ा जा रहा है जो cdपहले से नहीं कर रहा है।
हाशिम

यह केवल एक ही है जिसे मैं अब तक उपयोग करने में सक्षम था, जो पूछने वाले के लिए बिल्कुल काम करता था, अन्य सभी बस सभी फाइलों को हटा देते हैं। बेशक इसमें rmdir /s path-to-folderसभी सामान के साथ फ़ोल्डर को हटा दिया जाएगा, लेकिन पूछने वाला यह जानना चाहता था कि काम करने वाली निर्देशिका में सब कुछ कैसे हटाया जाए।
Katz_Katz_Katz

इस जवाब ने मेरे लिए सबसे अच्छा काम किया। अन्य सभी उत्तरों के साथ / Q / का उपयोग करते समय यह गैर-खाली निर्देशिकाओं को नहीं हटाता है और जब उपयोग नहीं किया जाता है तो हमेशा इसकी पुष्टि करता है।
मैरिंजर

5
rmdir "c:\pathofyourdirectory" /q /s

उद्धरण का उपयोग करने के लिए मत भूलना और इसके लिए /q /sसभी रिपॉजिटरी को हटा देगा और बिना संकेत दिए।


2
सवाल था "मैं विंडोज 7 में एक बैच फ़ाइल में सभी फ़ाइलों और सबफ़ोल्डर्स को हटाना और शीर्ष फ़ोल्डर को रखना चाहूंगा "
वर्नर हेनज़

5

आप rmdir का उपयोग फ़ाइलों और सबफ़ोल्डर को हटाने के लिए कर सकते हैं, जैसे:

rmdir /s/q MyFolderPath

हालांकि, यह काफी तेज है, खासकर जब आपके पास rmdir से पहले डेल का उपयोग करने के लिए आपकी संरचना में बहुत सारे सबफ़ोल्डर हैं, जैसे:

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

पहला विकल्प एक त्रुटि देता है "निर्देशिका खाली नहीं है"। दूसरे विकल्प में पहला कमांड, पूरे फ़ोल्डर को हटा देता है। यह वैसा नहीं रखता जैसा मैं चाहता था। यदि पहले कमांड ने संपूर्ण फ़ोल्डर को हटा दिया है तो दूसरी कमांड की आवश्यकता नहीं है।
टोनी_ हेनरिक

rmdirआदेश (दोनों एक ही हैं) मूल फ़ोल्डर को नष्ट करेगा। यह सवाल का जवाब नहीं है । लोग क्यों नहीं पढ़ते हैं?
हाशिम

3

यदि आप सभी सबफ़ोल्डरों सहित किसी फ़ोल्डर में सभी फ़ाइलों को हटाना चाहते हैं, और रूट फ़ोल्डर को बरकरार रखने के लिए कुछ त्रुटि स्थितियों पर भरोसा नहीं करते हैं (जैसे मैंने दूसरे उत्तर में देखा था) तो आपके पास इस तरह एक बैच फ़ाइल हो सकती है:

@echo off

REM Checking for command line parameter
if "%~1"=="" (

    echo Parameter required.
    exit /b 1

) else (

    REM Change directory and keep track of the previous one
    pushd "%~1"

    if errorlevel 1 (

        REM The directory passed from command line is not valid, stop here.
        exit /b %errorlevel%

    ) else (

        REM First we delete all files, including the ones in the subdirs, without confirmation
        del * /S /Q

        REM Then we delete all the empty subdirs that were left behind
        for /f %%D IN ('dir /b /s /a:d "%~1"') DO rmdir /S /Q "%%D"

        REM Change directory back to the previous one
        popd

        REM All good.
        exit /b 0
    )

)

और फिर आप इसे बस कहेंगे:

empty_my_folder.bat "C:\whatever\is\my folder"

3

आप इन तीन निर्देशों को अपनी बैट फाइल में डालकर इसे जल्दी और आसानी से कर सकते हैं:

mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder

यह बेहद उपयोगी है क्योंकि यह किसी भी छिपी या सिस्टम फ़ाइलों को भी हटा देता है।
कमजोर

1

यह मेरे लिए बेहतर काम किया जब मेरे पास फ़ोल्डर नामों में स्थान थे।

@echo off
REM ---- Batch file to clean out a folder
REM Checking for command line parameter
if "%~1"=="" (

echo Parameter required.
exit /b 1

) else (
echo ***********************************************************************************
    echo *** Deleting all files, including the ones in the subdirs, without confirmation *** 
    del "%~1\*" /S /Q
echo ***********************************************************************************
    REM Deleting all the empty subdirs that were left behind
FOR /R "%~1" %%D IN (.) DO (
    if "%%D"=="%~1\."  (
    echo *** Cleaning out folder: %~1 *** 
    ) else (
    echo Removed folder "%%D"
    rmdir /S /Q "%%D"
    )
) 

    REM All good.
    exit /b 0

)

लोग हमेशा नामों में रिक्त स्थान होने के बारे में भूल जाते हैं।
केविन पेंको

1

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

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

0

इसी से मेरा काम बना है।

  1. उस फ़ोल्डर के अंदर नेविगेट करें जहाँ आप फ़ाइलों को हटाना चाहते हैं।
  2. प्रकार: del *
  3. Y हाँ के लिए।
  4. किया हुआ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.