कैसे करने के लिए बैच विंडोज PowerShell में फ़ाइल नाम Regex का उपयोग करके का हिस्सा नाम बदलने?

इस उदाहरण में, हमारे पास है 6 तारीख और नीचे फ़ाइल नाम के साथ नीचे फ़ाइलें:

मोड LastWriteTime लंबाई नाम
----                -------------         ------ ----
-ए----       10/06/2018     12:40              0 1 = 9.8.16 बैंक विवरण 298.67.pdf
-ए----       10/06/2018     12:40              0 2 = 9.9.16 बैंक विवरण 134.74.pdf
-ए----       10/06/2018     12:41              0 3 = 9.10.16 बैंक विवरण 123.43.pdf
-ए----       10/06/2018     12:41              0 4 = 9.11.16 बैंक विवरण 134.54.pdf
-ए----       10/06/2018     12:41              0 5 = 9.12.16 बैंक विवरण 157.98.pdf
-ए----       10/06/2018     12:41              0 6 = 9.1.17 बैंक विवरण 123.45.pdf

यहाँ, फ़ाइल नाम एक सीरियल शामिल # शुरू में, = के बाद, 'बैंक स्टेटमेंट के बाद’ विवरण के शेष के अंत के बाद.

इन फ़ाइलों तथ्य क्रेडिट कार्ड विवरण और शब्द 'बैंक में हैं’ शब्द 'क्रेडिट कार्ड' से बदला जाना आवश्यक. सभी फ़ाइल नाम के बाकी एक ही रहना चाहिए.

इस लक्ष्य को हासिल करने के लिए, we will be using विंडोज़ शक्ति कोशिका with Regex.

सभी बैंक विवरण को सूचीबद्ध करने के, हम उपयोग करते हैं ls आदेश, तो पाइप उत्पादन

ls | रेन -newname {$_.name -replace('(.+)बैंक(.+)','$ 1Credit कार्ड $ 2')}

नाम बदलने आदेश फ़ाइलों का नाम बदलना पाइप के बाद प्रयोग किया जाता है. $_ उद्देश्य यह है कि पाइप से पहले उत्पादन को धारण करता है, और हम के नाम पर संपत्ति का उपयोग कर रहे $_ वस्तु. -replace is used on strings in शक्ति कोशिका, जो एक नया तार के साथ एक स्ट्रिंग की जगह. -replace एक समारोह है कि लेता है 2 मापदंडों. 1 पैरामीटर वर्ष स्ट्रिंग है कि हम बदलना चाहते है और 2 पैरामीटर नया स्ट्रिंग है.

Regex में समूहों कैप्चरिंग हमें स्ट्रिंग के कुछ हिस्सों रखने की अनुमति देता है. Regex में, कोष्ठक में डाल कुछ भी बाद में उपयोग करने के लिए कब्जा कर लिया है. जैसे. (.+)Bank(.+) पहले और पात्रों के बैंक 'के बाद कुछ भी कब्जा. हम इन पर कब्जा कर लिया भागों का उपयोग कर सकते, का उपयोग करके $ और एक नंबर. 1 कोष्टक में कब्जा $1 और 2 कोष्टक में कब्जा $2 आदि…

1 पैरामीटर में, हम पुराने स्ट्रिंग है कि हम बदलना चाहते हैं निर्दिष्ट, और एक ही समय में हम स्ट्रिंग के कुछ हिस्सों कि हम रखना चाहते हैं पर कब्जा (कब्जा). 2 पैरामीटर में, नई स्ट्रिंग पर कब्जा कर लिया भागों है कि हम रखना चाहते हैं का उपयोग करता है, साथ ही नए स्वयं स्ट्रिंग के रूप में जैसे. '$1Credit Card$2'.

परिणाम:

मोड LastWrite समय की लंबाई का नाम
----       ---------      ----            ------   ----
-ए----     10/06/2018     12:40              0 1 = 9.8.16 क्रेडिट कार्ड विवरण 298.67.pdf
-ए----     10/06/2018     12:40              0 2 = 9.9.16 क्रेडिट कार्ड विवरण 134.74.pdf
-ए----     10/06/2018     12:41              0 3 = 9.10.16 क्रेडिट कार्ड विवरण 123.43.pdf -एक ----     10/06/2018     12:41              0 4 = 9.11.16 क्रेडिट कार्ड विवरण 134.54.pdf -एक ----     10/06/2018     12:41              0 5 = 9.12.16 क्रेडिट कार्ड विवरण 157.98.pdf -एक ----     10/06/2018     12:41              0 6 = 9.1.17 क्रेडिट कार्ड विवरण 123.45.pdf

एक उत्तर दें छोड़ दो