如何批量重命名使用正则表达式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

发表评论