簡體   English   中英

如何使用正則表達式重命名Powershell中的文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM