विशिष्ट प्रकार (एक्सटेंशन) की सभी फ़ाइलों को एक बैच फ़ाइल का उपयोग करके किसी निर्देशिका की पुनरावृत्ति को हटा दें


84

मुझे dir1 और dir2 में सभी .jpg और .txt फाइलें (उदाहरण के लिए) को हटाने की जरूरत है।

मैंने जो कोशिश की वह थी:

@echo off
FOR %%p IN (C:\testFolder D:\testFolder) DO FOR %%t IN (*.jpg *.txt) DO del /s %%p\%%t

कुछ निर्देशिकाओं में इसने काम किया; दूसरों में यह नहीं था।

उदाहरण के लिए, इसने कुछ नहीं किया:

@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t

दूसरे स्निपेट में मुझे क्या याद आ रहा है? यह काम क्यों नहीं किया?


यदि आप इसके बारे में अधिक जानकारी प्रदान करते हैं कि यह वास्तव में "काम नहीं करता" तो यह कैसे मदद करेगा । वास्तविक परिणाम अपेक्षित परिणाम से कैसे भिन्न होता है? क्या आपको एक त्रुटि संदेश मिलता है? कौन कौन से?
अंसार विएकर

जवाबों:


202

आप delकमांड के साथ वाइल्डकार्ड का उपयोग कर सकते हैं , और /Sइसे पुनरावर्ती रूप से करने के लिए।

del /S *.jpg

परिशिष्ट

@BmyGuest ने पूछा कि एक अस्वीकृत उत्तर ( del /s c:\*.blaawbg) मेरे उत्तर से अलग क्यों था।

वहाँ एक है विशाल चल के बीच का अंतर del /S *.jpgऔर del /S C:\*.jpg। पहले कमांड को वर्तमान स्थान से निष्पादित किया जाता है , जबकि दूसरे को पूरे ड्राइव पर निष्पादित किया जाता है

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

हालाँकि, यदि आप किसी परियोजना पर काम कर रहे हैं, और अपनी सभी dllफ़ाइलों को हटाना चाहते हैं myProject\dll, और निम्न बैच फ़ाइल चलाएँ:

@echo off

REM This short script will only remove dlls from my project... or will it?

cd \myProject\dll
del /S /Q C:\*.dll

फिर आप सभी dllफ़ाइलों को हटाकर अपनी C:\ड्राइव बनाते हैं । आपके सभी एप्लिकेशन काम करना बंद कर देते हैं, आपका कंप्यूटर बेकार हो जाता है, और अगले रिबूट पर आपको चौथे आयाम में टेलीपोर्ट किया जाता है, जहां आप अनंत काल के लिए फंस जाएंगे।

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


3
pauseअंत में एक पंक्ति लागू करने से उपयोगकर्ता पूरी लॉग इन जानकारी देख सकेगा।
KNU

2
परिशिष्ट, लाफ के लिए धन्यवाद। मुझे लगता है कि यह दूसरों को वास्तव में महत्वपूर्ण अंतर को दिखाने में मदद करेगा।
बेमुगेस्ट

यदि कोई किसी विशिष्ट डायर से हटाना चाहता है, तो आप संयोजन कर सकते हैं cdऔर del`& 'के साथ आदेश देख सकते हैं, stackoverflow.com/q/8055371/7429464
FindOutIslamNow

@FindOutIslamNow या आप delमौजूदा निर्देशिका को बदलने के बिना, कमांड में पूर्ण पथ निर्दिष्ट कर सकते हैं ।
'12

बस इसके लिए एक छोटी सी चेतावनी - अगर कोई फ़ाइलों को हटाने के लिए नहीं मिला है, तो यह एक त्रुटि का कारण होगा।
जेमी मार्शल

4

मैंने कुछ समय पहले एक बैच स्क्रिप्ट लिखी थी जो आपको हटाने के लिए फ़ाइल एक्सटेंशन चुनने की अनुमति देती है। स्क्रिप्ट उस फ़ोल्डर में दिखाई देगी जो उस एक्सटेंशन के साथ किसी भी फ़ाइल के लिए और सभी सबफ़ोल्डर्स में है और इसे हटा दें।

@ECHO OFF
CLS

SET found=0
ECHO Enter the file extension you want to delete...
SET /p ext="> "

IF EXIST *.%ext% (           rem Check if there are any in the current folder :)
  DEL *.%ext%
  SET found=1
)
FOR /D /R %%G IN ("*") DO (  rem Iterate through all subfolders
  IF EXIST %%G CD %%G
  IF EXIST *.%ext% (
    DEL *.%ext%
    SET found=1
  )
)

IF %found%==1 (
  ECHO.
  ECHO Deleted all .%ext% files.
  ECHO.
) ELSE (
  ECHO.
  ECHO There were no .%ext% files.
  ECHO Nothing has been deleted.
  ECHO.
)

PAUSE
EXIT

आशा है कि यह किसी के लिए उपयोगी है जो इसे चाहता है :)


वैकल्पिक रूप से, यदि आपने बैश स्थापित किया है (साइगविन, डब्लूएसएल, आदि), तो एक सरल find . -name "*.ext" -type f -delete(जहां ext आपके चुने हुए एक्सटेंशन है)।
११'११ में Pyroglyph

3

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

DEL "C:\Folder\*.*" /S /Q

या इसका उपयोग केवल कुछ फ़ाइल प्रकारों को हटाने के लिए करें:

DEL "C:\Folder\*.mp4" /S /Q 
DEL "C:\Folder\*.dat" /S /Q 

0

टिप्पणी जोड़ने के लिए मेरे पास पर्याप्त प्रतिष्ठा नहीं है, इसलिए मैंने इसे उत्तर के रूप में पोस्ट किया। लेकिन इस आदेश के साथ मूल मुद्दे के लिए:

@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t

पहले के लिए पुनरावर्ती वाक्यविन्यास का अभाव है, यह होना चाहिए:

@echo off
FOR /R %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t

आप बस कर सकते हैं:

FOR %%p IN (C:\Users\0300092544\Downloads\Ces_Sce_600) DO @ECHO %%p

वास्तविक उत्पादन दिखाने के लिए।


0

यह बात है:

@echo off

:: del_ext
call :del_ext "*.txt"
call :del_ext "*.png"
call :del_ext "*.jpg"

:: funcion del_ext
@echo off
pause
goto:eof
:del_ext
 set del_ext=%1
 del /f /q "folder_path\%del_ext%"
goto:eof

pd: अपने फ़ोल्डर से folder_path को बदलें


-11

यदि आप C: ड्राइव में कुछ।

del /s c:\*.blaawbg

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


13
यह भयानक असुरक्षित लगता है।
दुदवद

5
इस उत्तर (-2 वोट) और स्वीकृत एक (+42 वोट) के बीच मुख्य अंतर क्या है?
बेमुगेस्ट

6
@BmyGuest मुख्य अंतर यह है कि यदि आप सब-फोल्डर में कहीं मेरी कमांड निष्पादित करते हैं, तो यह केवल इस सबफ़ोल्डर के तहत स्थित फ़ाइलों को प्रभावित करेगा। इस उत्तर में, आप पूरी ड्राइव में फ़ाइल नाम से मेल खाने वाली हर चीज़ को हटा देते हैं । इसलिए यदि आप अपने प्रोजेक्ट में कुछ dll फ़ाइलों को हटाना चाहते हैं, और आप गलती से टाइप del /s c:\*.dllकर रहे हैं, तो आप बहुत बुरा आश्चर्य के लिए तैयार हैं। पूरी ड्राइव पर कभी भी ऐसी कमांड चलाएं, जब तक कि बिल्कुल आवश्यक न हो।
लाफ

2
मुझे नहीं लगता कि इस जवाब के लायक है कि कई डाउनवोट हैं। उत्तर बताता है कि यह कमांड पूरे ड्राइव (और क्यों) के लिए है। c:यदि वांछित व्यक्ति संपूर्ण ड्राइव नहीं चाहता है, तो वांछित फ़ोल्डर द्वारा प्रतिस्थापित किया जाना चाहिए।
user1527152

2
मुझे लगता है कि इसे और अधिक मतों की आवश्यकता है यदि यह अधिक नहीं है क्योंकि यह अस्वीकरण और क्या नहीं करने की चेतावनी के रूप में कार्य करता है। आप इस तरह से कोड को कॉपी, पेस्ट और निष्पादित करके वास्तव में चीजों को पेंच कर सकते हैं। कई ईस्टर अंडे को "सुरक्षित" तरीके से इस सटीक सबक को सिखाने के लिए बैश में बनाया गया है .. यह उदाहरण आपके दिन को बर्बाद कर सकता है। श्रेष्ठ!
कटहल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.