powershell - move-item doesn't work in loop -


  एलएस * .gif | Foreach {$ newname = $ _। नाम -रेले '\ [', '' -replace ']', '' लिखने वाला मेजबान $ _। नाम $ newname move-item -path $ _। नाम -निर्धारण $ newname; } Ls * .gif   

तो किसी को [] के साथ फ़ाइलों का नाम बदलने में मदद करने की कोशिश करते हुए, मैंने पाया कि चाल-आइटम एक लूप में काम नहीं करती। ऐसा लगता है कि लूप के ठीक से काम करना ठीक है।

विचार?

अपडेट: नीचे दी गई टिप्पणी के आधार पर, मैं इसे स्पष्ट करना चाहता हूं: फ़ाइल नामों के विशेष वर्णों के लिए आपको -LiteralPath पैरामीटर का उपयोग करने की आवश्यकता होती है। -पैथ उन वर्णों को नियंत्रित नहीं कर सकता एक पाश के बाहर, -पाथ काम करती है जब से आप `` का प्रयोग करके विशेष वर्णों से बच रहे हैं। संग्रह के माध्यम से चलते समय यह संभव नहीं है।

एक पाश में, आपको -पाथ के बजाय -LiteralPath पैरामीटर का उपयोग करने की आवश्यकता है।

  -लाइटलपाथ & lt; string [ ] & gt; आइटम के वर्तमान स्थान का पथ निर्दिष्ट करता है पथ के विपरीत, लिटलपाथ का मान ठीक उसी प्रकार उपयोग किया जाता है, जैसा कि टाइप किया गया है। ** कोई अक्षर वाइल्डकार्ड के रूप में व्याख्या नहीं किए गए हैं यदि पथ में भागने वाले पात्र शामिल हैं, तो इसे एकल उद्धरण चिह्नों में लगाया जा सकता है। ** एकल उद्धरण चिह्नों को विंडोज पॉवरशेल बताते हैं कि एस्केप अनुक्रम के रूप में किसी भी वर्ण की व्याख्या नहीं करें।   

अतः, यह हो जाएगा:

  जीसीआई-रिसर्च * .txt | % {हटो-मद-लिटर-पाथ $ _ पूर्णांक -निष्करण "सोमेन्यूनाम"}    

Comments