如何批量重命名使用正則表達式Windows PowerShell中的文件名的一部分?

在這個例子中, 我們有 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

這裡, 文件名中包含一個串行 # 初, 接著=, 其次是“銀行對賬單’ 其次是對賬單餘額結束.

這些文件其實都是信用卡帳單和單詞“銀行’ 需要由詞'信用卡'來代替,. 文件名的其餘全部應保持不變.

為了實現這一目標, 我們將使用 電源外殼 與正則表達式.

要列出所有的銀行對賬單, 我們使用 ls 命令, 然後通過管道將輸出

LS | ren -newname {$_.name -replace(“(.+)銀行(.+)“,'$ 1Credit卡$ 2')}

重命名命令管道後用於重命名文件. $_ 是,管之前保持輸出對象, 我們正在使用的name屬性 $_ 目的. -replace 用在字符串中 電源外殼, 它取代一個字符串用新字符串. -replace 是需要一個功能 2 參數. 第1個參數是我們要替換的舊字符串,第二個參數是新字符串.

捕獲正則表達式組允許我們保持部分字符串. 在正則表達式, 任何東西放在括號被捕獲後使用. 例如:. (.+)Bank(.+) 之前和人物“銀行”後,捕捉什麼. 我們可以利用這些捕獲部分, 通過使用 $ 和許多. 首屆括號捕捉到 $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 -a ----     10/06/2018     12:41              0 4 = 9.11.16 信用卡賬單134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 信用卡賬單157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 信用卡賬單123.45.pdf

發表評論