关于批量重命名

wils
wils Lv.2 潜力创作者

Lv.2潜力创作者

前两天有朋友问,如何将目录里的 “证据3:测试内容.pdf” 这样的文件,批量重命名

让 “证据” 后面的数字减少2


目前用过的工具里,我觉得perl的rename脚本最为方便,在这里先介绍一下:

🔔

rename 's/^证据\K\d+/$&-2/e' *.pdf

这个命令只有三个部分:

  • rename是命令

  • *.pdf匹配当前目录所有pdf文件

  • 关键是中间那个表达式

  • 从整体看s/x/y/z是个正则替换语句,s表示替换,/是分隔,x是查找的正则,y是替换成的表达式,z是flags(比如g表示全局i表示忽略大小写等)

  • x是^证据\K\d+,表示以“证据”开头,后面跟着的多个数字

  • y是$&-2,表示匹配到的数字减2

  • z是e,表示y这个部分需要求值,而非纯字面的字符串替换

个人感觉这个工具特别直观,正则匹配,然后表达式求值

相比之下,windows里的powershell也显得稍微麻烦一点


不知道批量重命名工具能否借鉴一下,提供正则替换方式,但求值这一步恐怕不好弄😁


另外有的朋友实在不喜欢代码

可以在论坛里搜一下基于表格的重命名工具

就是做个wps表格,然后弄两个宏按钮

  • 点击按钮加载指定目录的所有文件名写入A列

  • 然后用筛选、公式等任何你熟悉的方式,在B列计算出新文件名

  • 点击按钮批量重命名A列为B列

第一个按钮用FileSystem.readdirSync

第二个按钮用ffi调用SHFileOperationW,支持撤销的重命名

方法都是现成的,但我还是觉得不如代码来的灵活,希望更多朋友来尝试,提出更好的方案

海南省
浏览 251
收藏
10
分享
10 +1
1
+1
全部评论 1
 
user_19042982
不错,下次我也分享两个批量重命名软件
· 安徽省
回复