मुझे पावरशेल में नाम बदलने-स्क्रिप्ट बनाने में काफी परेशानी हो रही है। स्थिति: एक निर्देशिका मैं निम्नलिखित प्रारूप के साथ नामक फ़ोल्डर है में: "चार अंक - पाठ - जंक" कौन सा मैं के नाम बदलना चाहते हैं "पाठ (चार अंक)"पावरशेल रेगेक्स ग्रुपिंग
अभी मैं बनाया है कुछ नमूना नाम के साथ एक निर्देशिका के साथ चारों ओर खेलने के लिए:
1996 - कुछ दिलचस्प - कुछ भद्दा
2006 - इस कॉपी - उपेक्षा प्रतिध्वनित करने के लिए एक स्क्रिप्ट की स्थापना
मैं कोशिश की है उनके नाम शुरू करने के लिए लेकिन मैं regex की लटका नहीं मिल सकता है। निम्नलिखित कोड सिर्फ प्रिंट "1996 - कुछ" और "2006 - प्रतिलिपि"
Get-ChildItem | Foreach-Object { if ($_.BaseName -match "(\d{4} - \w+ -*)") { echo $matches[0]}}
और यह एक प्रिंट होगा "1996 - कुछ दिलचस्प - कुछ भद्दा \ n()" और "2006 - कॉपी इस - उपेक्षा \ एन() "
Get-ChildItem | Foreach-Object { echo ($_.BaseName -replace "(\d{4} - \w+ - *)"), "$2 ($1)"}
क्या कोई मुझे बता सकता है कि क्यों न तो दृष्टिकोण मिलान के लिए सीमा के रूप में शाब्दिक स्ट्रिंग का सम्मान करता है? इस से पहले अनुगामी अंतरिक्ष ट्रिम करने के लिए है -
Get-ChildItem | Foreach-Object {
if ($_.BaseName -match "(\d{4} - [^-]*)") {
echo $matches[0].TrimEnd()
}
}
नोट TrimEnd:
* संपादित करें * धन्यवाद zespri, कोड है कि मेरी समस्या हल
Get-ChildItem | Foreach-Object {
if ($_.BaseName -match "(\d{4} - [^-]*)") {
Rename-Item $_ ($_.BaseName -replace "(\d{4}) - (.+)(?= -).*" ,'$2 ($1)')
}
}
यह जो कि हाँ से मेल के नाम गूंज जाएगा, कि में एक कदम है सही दिशा अब इसके साथ कुछ करने के लिए: "कुछ दिलचस्प (अंक)" के लिए सुधार। मैंने दो हिस्सों को लपेटने की कोशिश की है जिन्हें मैं ब्रांड्स में निकालना चाहता हूं और उन्हें $ मैचों के माध्यम से निकालना चाहता हूं [0] समूह [] á la http://stackoverflow.com/questions/614651/how-do-you-extract-the -उत्पादन-ए-रेगेक्स-बैकरेफर-मैच-इन-पावरहेल लेकिन यह वैध ऑपरेटर नहीं है।मैंने उनमें से नामित और अज्ञात समूह करने का भी प्रयास किया है, लेकिन मुझे पूरे पाठ के अलावा कुछ भी नहीं मिल सकता है, या जंक के बाद कोष्ठक की एक खाली जोड़ी नहीं मिल सकती है। – Glader
@Glader: मैं उम्मीद कर रहा था कि सही दिशा में एक कोमल नज पर्याप्त होगा =)। मैंने कोड को जोड़ने के लिए उत्तर को संशोधित किया है जो नामों को दोबारा सुधारता है। –
तो मेरे पास था, लेकिन मैं अपने जीवन के लिए उचित विधि को समझ नहीं पाया .. पहले रेगेक्स पर एकाधिक या 'चार मांगों आदि को जोड़कर कोशिश की गई लेकिन गधे में मुझे कुछ काट रहा है। ^^ बहुत बहुत धन्यवाद, मैंने अपनी मूल पोस्ट को उस कोड के साथ अपडेट किया है जिसके साथ मैं गया था। – Glader