欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PowerShell正则替换+批量修改文件名

程序员文章站 2024-03-24 19:33:28
...

写在前面

最近对于修改文件名有了新的需求,就是批量去掉文件名中的括号以及数字,类似这样:(1),但是数字是会随着文件的不同而递增的,这就只能用正则表达式来搞定啦。修改文件名我还是采用了PowerShell,号称Shell中处理字符串速度最快,下面来具体介绍一下操作方法。一些Powershell的函数简介可以看我的另一篇文章:《powershell一行代码批量修改文件名(附命令详解)》。

问题与分析

我先用for循环生成一些测试文件,方便下面的演示,需要用到PowerShell中的New-Item方法,代码及结果如下。

for ($i=1; $i -lt 20; $i++){new-item -name $i.txt;}

PowerShell正则替换+批量修改文件名
目标就是去掉文件名中的括号以及内部的数字,下面用正则表达式进行实现。需要注意的是,这里面不再使用.Replace()方法,而使用字符串处理的-replace参数,因为只有这个参数支持正则语法。

具体代码及讲解

还是只有一行代码,简洁明了,十分迅速????。

ls *.txt | foreach{ren $_.name ($_.name -replace '\(\d+\)', '')}
  • 首先读取全部文件,我还是习惯使用别名进行操作,即ls,后面跟上通配符+待修改文件的后缀名,就OK了。
  • 其次是采用管道操作|,后面跟上逐元素进行操作的循环命令foreach
  • 最后就是改名啦,这里依旧使用别名ren,采用转义字符\对正则中的括号进行转义,就可以完成修改啦。

注意事项

上面语句中的括号不能少,就是($_.name -replace '\(\d+\)', '')这块,由于这里使用的是参数形式的命令,所以要加括号,否则会报错。