[英]how do I rename files in Powershell with regex?
我在文件名末尾有一些帶有字字符和數字的文件。 由於某種原因,我的正則表達式無法正常工作。 以下是我的文件名示例:
test abc12345.zip
abcd def98765.zip
test xyz23456.zip
這是我的正則表達式:
dir | rename-item -NewName {$_.name -replace "(\w\w\w\d\d\d\d\d.zip)","[$1].zip"}
當我運行選擇片段時,它將刪除:
abc12345
def98765
xyz23456
從文件名中插入括號:
test [].zip
abcd [].zip
test [].zip
如何將內容保留在方括號內? 不知道為什么我的代碼會刪除[]之間的所有內容
test [abc12345].zip
abcd [def98765].zip
test [xyz23456].zip
將雙引號替換為單引號。 Powershell解析雙引號的內容並將$1
替換為(不存在/空)變量$1
此外,通過對單詞和數字字符使用量詞,可以使正則表達式更簡單
(\w\w\w\d\d\d\d\d.zip)
可以更改為這個較短的版本
(\w{3}\d{5}.zip)
查看您的預期輸出,當前捕獲組還有另一個問題,其中包括.zip擴展名。 您真正想要的是什么,而不是捕獲包括擴展程序在內的所有內容
(\w{3}\d{5}.zip)
是僅捕獲單詞/數字部分
(\w{3}\d{5}).zip
現在,您可以使用捕獲組在它們周圍放置括號。 您的最終正則表達式和替換項可能看起來像這樣
dir | rename-item -NewName {$_.name -replace '(\w{3}\d{5}).zip','[$1].zip'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.