सभी फ़ाइलों को हटाना जो एक निश्चित पैटर्न से मेल नहीं खाते - विंडोज कमांड लाइन


12

कमांड-लाइन के माध्यम से आइटम हटाना बहुत आसान है।

del /options filename.extension

अब, मान लीजिए कि मैं उन सभी फ़ाइलों को हटाना चाहता हूं जो एक फ़ोल्डर में .jpg के साथ समाप्त नहीं होती हैं, तो मैं यह कैसे करूंगा।

बात यह है, मेरे पास सॉफ्टवेयर का एक टुकड़ा है जो सभी निर्दिष्ट छवियों को .jpg में परिवर्तित करता है, लेकिन यह मूल छोड़ देता है, जिसकी मुझे अब आवश्यकता नहीं है।

यह एक अलग कथन को निष्पादित करने के लिए बहुत अधिक कुशल होगा, प्रत्येक अलग-अलग फ़ाइल के लिए कई कथन करने की तुलना में।

जवाबों:


14

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

attrib +r *.jpg
del /q *
attrib -r *.jpg

यह पहले सभी JPG फाइलों को रीड-ओनली करेगा, बाकी सब को डिलीट कर देगा (यह अपने आप रीड-ओनली फाइल्स को छोड़ देगा), और फिर JPG फाइल को फिर से लिखने योग्य बना देगा।


एक विजेता की तरह काम किया। नोट: बस /sउपनिर्देशिका में फ़ाइलों को पुन: शामिल करने के लिए प्रत्येक पंक्ति में जोड़ें ।
चक विल्बर

9

यह वास्तव में बहुत आसान है।

आपको forफ़ाइलों पर पुनरावृति करने की आवश्यकता होगी और फिर बस एक्सटेंशन की तलाश करें:

for %f in (*) do if not %~xf==.jpg del "%f"

चाल ( यहाँ कोड ) करना चाहिए ।


धन्यवाद, लेकिन यह अकेले इस बात पर निर्भर करता है कि मैं किस मानचित्र का उपयोग कर रहा हूं।
21

4
नक्शा?
जॉय

मैं कैसे कहूँ अगर नहीं .jpg और नहीं .jsp और नहीं .xml तो डेल?
user1164061

1

बचाव के लिए Powershell
विंडोज 7/8 के समय में यह अच्छी पुरानी कमांड लाइन का उत्तराधिकारी है

Del C:\myFolder\* -exclude '*.jpg'

Delके लिए एक उपनाम है Remove-Item। इसमें कई विकल्प जैसे पुनरावृत्ति, शामिल करना, बाहर करना और फ़िल्टर करना (RegEx के लिए इसका उपयोग करें)

आपको \*किसी दिए गए फ़ोल्डर में फ़ाइलें शामिल करने के लिए जोड़ना होगा


CMD प्रॉम्प्ट से, यह काम करना चाहिए:PowerShell.exe -Command "&{Remove-Item C:\MyFolder\* -Exclude '*.jpg'}"
Iszi

नोट: PowerShell विन 7/8 के साथ आता है। विंडोज एक्सपी या विस्टा के लिए, आपको इसे डाउनलोड और इंस्टॉल करना होगा।
इस्जी

1

मुझे पता है कि यह सीधे आपके सवाल का जवाब नहीं दे रहा है, लेकिन क्या आपने अपने कन्वर्टर पर विकल्प देखे हैं कि क्या:

  1. यह मूल को ही हटा सकता है

या

  1. एक नए फ़ोल्डर में .jpg लिखें?

मेरे पास ऐसा करने का सीधा विकल्प नहीं है। अगर यह जेपीजी के साथ शुरू करने के लिए मूल है, तो यह अधिलेखित कर देगा। लेकिन अन्य सभी डिस्क पर बने रहते हैं जबकि उनमें से एक जेपीजी बनाया जाता है।
21

@WebDevHobo - ओह ठीक है, मैं जोहानिस सुझाव के साथ फिर जाना होगा।
ChrisF

0

मैं सभी फाइलों को खोजने के लिए एक रास्ता खोज रहा था, जिसमें विंडोज 7 (एनटीएफएस वॉल्यूम) पर एक निर्देशिका TREE में ".mp3" विस्तार नहीं था, जिसमें विभिन्न गहराई की कई सौ निर्देशिकाओं में संभवतः 20,000 फाइलें शामिल थीं ... इसलिए थोड़ी सी क्रोध, मैंने इस्तेमाल किया:

cd <theplace>
dir /S | find /V "<DIR>" | find /V "Total" | find /V "bytes" | find /V "Directory" | find /V "Volume" | find /V ".mp3" | more /S

इसने उन फाइलों को सूचीबद्ध किया जो DIR कमांड आउटपुट से जुड़ी हर चीज को अलग करने के बाद .mp3 से मेल नहीं खाती ... 99% काम करती है ... जब तक कि मेल नहीं खाती फाइल को मानक DIR आउटपुट में कीवर्ड में से एक नाम दिया गया है - शायद डीआईआर रिपोर्ट को कम हेडर / सारांश जानकारी बनाने का एक तरीका है - लेकिन मैं परेशान नहीं हुआ क्योंकि इस तरह से इसे ज्यादातर मिला।


स्पष्ट रूप से यहां पोस्टिंग कोड कुछ विशेष वर्णों को स्ट्रिप करता है ... इसलिए ऊपर "cd" कमांड अपने आप में एक लाइन पर था और लक्ष्य रूट डायरेक्टरी को निर्दिष्ट किया था, और पहले "खोज" कमांड ने किसी भी लाइन को हटा दिया जिसमें "<" DIR "> था "(जाने का आंकड़ा) क्योंकि यह dir कमांड का आउटपुट है - लेकिन यहाँ पोस्ट कोड सोच सकता है कि किसी प्रकार का मेटा-इंस्ट्रक्शन है और इसे स्ट्रिप करता है ...
CaptPat

1
ऐसा करने का एक बहुत आसान तरीका है: कमांड /bका झंडा dirdir /bकेवल वर्तमान निर्देशिका में फ़ाइल नाम और एक्सटेंशन dir /s /bसूचीबद्ध करेगा , वर्तमान और सभी उपनिर्देशिकाओं में सभी फ़ाइलों के पूरी तरह से योग्य नामों की सूची देगा। लूप के find /vबजाय पाइपिंग forएक अच्छा स्पर्श है जिसे मुझे याद रखना होगा, लेकिन मुझे नहीं लगता कि यह साथ काम करता है del
बॉब

0

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

for /r %f in (*) do if not %~nxf == abc.xml del "%f"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.