批量重命名,批量统计文件名
今天处理一批图片,分散在五十几个文件夹下,每个文件夹下的数量和名字均不相同,现在要统一按规律重命名并统计归档。
要求:1,命名规则:所在文件夹名_文件名.png
2,统计出每个子文件夹下数量
3,把每个子文件夹下的文件归档记录
如下图展示,几十个文件夹,每个文件夹下数量、名字都不规则。
步骤1,获取所有文件名称
①在主目录下,按住shift然后点击鼠标右键,选择“在此处打开命令窗口”
②输入dir /s /b >> list.xlsx
说明:/s是表示输出包括子文件夹的内容;/b表示只输出文件名;>>是表示如果当前目录有该文件名则在后面追加内容,没有就新建。cmd命令中1个空格符合和多个空格符是一样的,不影响。
③返回主目录,找到刚才新生成的Excel文件,打开做数据处理。
步骤2,重命名准备
①复制一个list.xlsx做备份,等会还要用到
②在主目录下打开刚才生成Excel表格,选中第一列,选择“数据”--“分裂”--“分隔符号”--“其他”--输入反斜杠\
分裂后的数据如上图,G列是文件夹名称,H列是文件名称。
③在J1输入=G1&"_"&H1,把字符串连接起来。然后下拉,就获取到了需要的新名称
④填充完J列,打开刚才复制的备份list.xlsx表格,并把J列全部复制到备份表格的B列,然后再在A列左边插入一列,并输入rename
⑤全选并复制这个表格,在主目录下新建一个txt文本文档,粘贴保存。然后重命名后缀从.txt改为.bat。
⑥双击bat执行。(注意:建议在备份文件中测试,以免丢失原始文件)
到这里重命名就完成了。接下来就是统计,不需要这一步的就不用看了。
步骤3,获取新的文件名
①同前面的操作,在主目录下按住shift的时候点鼠标右键,选择选择“在此处打开命令窗口”
②输入dir /s /b >> newlist.xlsx
③复制一个备份,打开newlist表格文件,然后通前面的操作,对数据进行分裂
④删除路径列表,只留下文件夹、文件名两列(删除后文件夹自动变为A列,文件名为B列)
⑤新建sheet2,复制A列到sheet2,选中A列后执行“数据”--“删除重复数据”,这样就得到了每一个文件夹名称
⑥把刚才得到的文件夹名称复制sheet1的C列,到这一步就完成的差不多了,接下来就是几个函数应用
步骤4,数据处理
经过上面的处理,得到下图的数据,总共389个文件,对应所在的文件夹应该也是389,但是文件夹数量确是54个,因为1个文件夹下有N个文件。
①统计每个文件夹下对应的文件数量
在D1输入=COUNTIF(A:A,C1),然后按ctrl+shift+enter,使内容有个花括号。然后下拉填充
②统计每个文件夹下的文件名
在E1输入=TEXTJOIN(";",TRUE,IF(C1=$A$1:$A$389,$B$1:$B$389,"")),然后按ctrl+shift+enter,使内容有个花括号。然后下拉填充。这样一个文件夹下的所有文件都在一个文本框内。【说明:此处用到的textjoin函数只在微软office365版本和金山WPS中才有,普通的office没有该函数】
③选中D、E列复制,在F1处右键“仅粘贴为数值,然后就可以把D、E列删除
心得:只提供思路,因为每次遇到数据形式、需要处理的方式不同,根据情况灵活作出变动。比如重命名有时需要按123顺序命名,有时子文件夹有多中类型文件只需要处理其中的一种等等,这个就需要穿插其他如通配符“*”等。