不知道大家工作中是否碰到过需要批量重命名的情况,我是遇到了,情况是我们在做一个人脸识别的项目,收集上来的文件名各种各样,系统有设置了批量导入照片的功能,但需要名称是对应系统里面的ID号。几千张照片,一张张处理那可以相当麻烦的事,后面想到的办法主要通过批处理和EXCEL来完成,主要以下三个步骤:
第一步,导出系统中用户的ID
第二步,读取照片的文件名,还好基本照片上有姓名,所以用姓名进行匹配
第三步,把匹配出来的ID批量给文件重命名
大家有什么好的方法也可以在评论区留言分享一下。
以下是操作的具体过程:
1、把系统中用户的姓名和ID导出会,先放到excel表格中
2、批量读取文件夹内的照片文件名,这里可以使用批处理
1)首先新建一个.txt的文件文件,这边就随便命名为1.txt了
2)打开这个1.txt文件,输入:DIR *.* /B> 2.TXT,然后保存退出
3)把.txt扩展名修改为.bat
4)双击运行.bat文件后,就会生成2.txt文件,里面就是读取的所有文件夹内的所有文件了。
5)把里面的内容也全部复制到excel文件内。
3、到这一步,所有的照片名称都读取出来了,还有系统的姓名和ID也有了,
然后,第一步我要先把读取出来的文件名只保留姓名,还是按文件名的顺序排列下来,这样后面匹配了id后,才能对应上是哪一个,所以我用的是sublime处理的,你们可以看用什么方法,如果不清楚怎么用sublime处理,我后面再另外写个文章介绍。
处理完之后就像下面这样子。
这里可能要注意看有没有姓名一样的,可以用excel的重复项筛选一下,把重名的先去掉,后面单独处理。
接着用vlookup函数,对姓名进行一下匹配,匹配对应的ID。
OK,匹配后,姓名和ID就对应上了。
好了,到这一步,ID和文件名对应上了,接下来就是用批处理批量把文件重命名为对应的ID就行了。
1)匹配出来的id是没有扩展名的,所以先在ID后面那一列,加上.jpg
2)然后把id和扩展名这两列复制出来,放到一个文件文件内,把中间的空格替为空
3)替换完之后,把合到一起的id和扩展名再ctrl+A全选,ctrl+C复制回excel表格中
4)好了,最后就是把原文件名和新文件名排列一下,利用rename进行批量重命名就行了,按下面样子进行一下排列。
接着在需要批量修改文件名的那个文件夹下再建个文本文件,把这三列复制到一个文本文件内,保存。
把扩展名修改为.bat,然后运行,运行后就修改过来了。