Powershell 匹配方括号内数字重命名文件

2022-03-03 20:48:16 +08:00
 haffner

请教大神们,Powershell 批量重命名一个文件夹下所有文件,如何匹配文件名方括号内 8 位数字并移动到文件名开头?试了好几种写法都有问题,不是不起作用就是报错。 原文件名为 [ABCD-1234][Ab-Cde][12345678]Abc def.rar 现在要重命名为 [12345678][ABCD-1234][Ab-Cde]Abc def.rar

1290 次点击
所在节点    程序员
4 条回复
PrinceofInj
2022-03-03 21:14:49 +08:00
如果固定的在第三段,用]分割文件名,然后把[替代掉,最后用格式化把最后一个改为第一个似乎可以。
ChaosesIb
2022-03-03 21:26:01 +08:00
正则,`(.*?)(\[\d{8}\])(.*)` 替换为 `$2$1$3`
ChaosesIb
2022-03-03 21:34:27 +08:00
```
Get-ChildItem . | Rename-Item -NewName { $_.Name -replace '(.*?)(\[\d{8}\])(.*)', '$2$1$3' }
```
另外如果经常需要整理文件的话,推荐一个文件管理器 Directory Opus ,功能很强大,它的批量重命名可以实时预览,支持正则、宏和 VBS/JS 脚本。
haffner
2022-03-03 21:39:22 +08:00
@ChaosesIb 谢谢,搞定了,非常好用。
ls *.rar | %{ Rename-Item -LiteralPath $_ ($_.name -replace "(.*?)(\[\d{8}\])(.*)",'$2$1$3') }

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/837800

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX