2011-09-11 10 views
6

में अंक के साथ फ़ाइलों को खोजने के लिए मैं नाम पर एक अंक या संख्या का एक निश्चित सीमा के साथ फ़ाइलों को खोजने के लिए एक नियमित अभिव्यक्ति का उपयोग करता है एक बैच फ़ाइल का एक उदाहरण चाहते हैं।बैच फ़ाइल नियमित अभिव्यक्ति नाम

क्या ऐसा करने का कोई तरीका है? एक साधारण उदाहरण?

+0

क्या सटीक रेंज आप के बाद कर रहे हैं और क्या स्वरूप में फ़ाइल नाम हैं? –

उत्तर

2

मैं अपने पर यह सोचते हैं रहा हूँ कमांड प्रॉम्प्ट/एमएस-डॉस बैच फ़ाइलों यहाँ के बारे में?

आप तो कर रहे हैं दुर्भाग्य से जवाब है नहीं, केवल वाइल्डकार्ड कि सादे पुराने बैच फ़ाइलों समर्थन कर रहे हैं:

* = match all 

और ? = मैच 1

तो

:

 mytune*.mp? 

से मेल होगा:

 mytune01.mp3, mytune01.mpg, mytune-the-best.mpe 

लेकिन एक विकल्प नहीं है ...

अपने एक आधुनिक खिड़कियों संस्करण का उपयोग करते हैं, तो संभावना है कि आप कर रहे हैं 'बिजली-खोल स्थापित करना होगा पर क्लिक करें

प्रारंभ> तो बिजली खोल में टाइप चलाने के लिए और प्रेस रिटर्न, अगर आपको कमांड प्रॉम्प्ट विंडो की तरह दिखता है तो आप इसे इंस्टॉल कर चुके हैं, यदि नहीं, तो डाउनलोड के लिए एमएस साइट देखें।

http://powershell.com/cs/blogs/ebook/archive/2009/03/30/chapter-13-text-and-regular-expressions.aspx

मैं तथापि होगा, लगभग एक घंटे के खर्च की सिफारिश:

बार जब आप इस किया है, अगर आप सीधे में गोता लगाने के लिए चाहते हैं, आप सभी आप पर रेग-पूर्व की जरूरत है पा सकते हैं यहाँ पुनश्च है पहले मूल बातें सीखना।

+0

हां आपने अनुमान लगाया है कि मैं विंडोज बैच के बारे में बात कर रहा हूं, मैंने अनुमान लगाया कि ऐसी कोई चीज़ नहीं है, लेकिन पूछने के लिए यह कोई दिक्कत नहीं है :) – Ori

+0

बिल्कुल ... शक्तियां जो भी आप चाहते हैं उसे रोकेंगी, और कर सकते हैं बैच फ़ाइलों के स्थान पर इस्तेमाल किया जाना चाहिए। – shawty

1

findstr में नहीं है। THIS

+1

findstr केवल एक दिया स्ट्रिंग के लिए अंदर फ़ाइलों खोज करता है, इस मामले में मुझे लगता है कि ओपी कमांड लाइन रेगुलर एक्सप्रेशन के बारे में था। – shawty

+0

और यदि आप फ़ाइल में कमांड आउटपुट लिखते हैं, तो आप इसे 'findstr' के साथ खोज सकते हैं। –

10

इनमें से कुछ क्रेडिट वाई.ए.पी. के उत्तर में जाता है।

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

@Echo Off 
CD C:\Folder\To\Process 
Dir /B>Dir.temp 
FindStr /R "[0-9]" "Dir.temp">FindStr.temp 
Del Dir.temp 
For /F "tokens=*" %%a In (FindStr.temp) Do Call :WorkIt "%%a" 
Del FindStr.temp 
Exit /B 

:WorkIt 
:: Insert code here. Use %1 to get the file name with quotes. For example: 
Echo Processing %1... 
Exit /B 

FindStr लाइन regex अभिव्यक्ति में शामिल है। रेगेक्स का कमांड लाइन संस्करण सीमित है। आप किस सटीक सीमा के बाद हैं और फ़ाइल नाम किस प्रारूप में हैं?

यदि, उदाहरण के लिए, आपको पता था कि सभी फाइलों में उनमें 3 अंकों की संख्या थी, तो आप इसे [0-2][0-9][0-9] अभिव्यक्ति के साथ 000 से 29 9 तक सभी वस्तुओं तक सीमित कर सकते हैं।

+0

बहुत धन्यवाद, यह हो सकता है कि मैं – Ori

+1

हाय की तलाश में था, कोई भी 'डीआईआर/बी'' के आउटपुट को पाइप करके इंटरमीडिएट फ़ाइल 'Dir.temp' से छुटकारा पा सकता है। इस तरह की डीआईआर/बी | findstr/आर "[0-9]"> FindStr.temp'। अन्यथा, एक बहुत अच्छी पोस्ट, मुझे बहुत मदद की। चीयर्स! – Jagger

संबंधित मुद्दे