Board logo

标题: [文件操作] 批量重命名后存在重复文件名,遇到重复文件名自动添加递增序号 [打印本页]

作者: 我是卖灯的    时间: 2018-11-5 01:37     标题: 批量重命名后存在重复文件名,遇到重复文件名自动添加递增序号

本帖最后由 我是卖灯的 于 2018-11-5 01:50 编辑

用excel处理重命名如下,另存为bat
ren E:\新建文件夹\1.jpg 别墅设计.jpg
ren E:\新建文件夹\2.jpg 别墅设计.jpg
ren E:\新建文件夹\3.jpg 三居室.jpg
ren E:\新建文件夹\4.jpg 三居室.jpg
ren E:\新建文件夹\5.jpg 三居室.jpg

希望得到
第一个文件    别墅设计.jpg
第二个文件    别墅设计01.jpg
第三个文件    三居室.jpg
第四个文件    三居室01.jpg
第五个文件    三居室02.jpg

依次类推,修改前文件名各不相同,修改后的文件名会有重复,遇到重复加序号
一共150000个文件

已经搜了一晚上了,实在找不到,软件也没有,批处理也不会
大神救救我,该怎么写批处理命令
作者: yhcfsr    时间: 2018-11-5 01:50

本帖最后由 yhcfsr 于 2018-11-5 01:52 编辑

看我签名加QQ,我需要了解EXCEL处理的文件细节
作者: Batcher    时间: 2018-11-5 09:06

建议跳过Excel直接用BAT处理,请详细描述一下根据什么规律重命名?
作者: 我是卖灯的    时间: 2018-11-5 16:44

回复 3# Batcher

2楼大神昨晚帮我解决好了。首先十分感谢大神的耐心和负责。

下面说一下解决方法,方便和我一样需求的小白直接带走。

1、通过excel处理好需要的文件名(路径/老文件名.jpg   新文件名)

注意:一定要依据第二列数据排序,让相同的重复数据排在一起。

2、全选处理好的两列数据粘贴到 新建文本文档.txt (注:同时复制两列,不做任何其他处理)
3、复制代码,另存为bat文件
  1. @set @n=0/*&echo off
  2. dir /a-d/b *.txt|cscript -nologo -E:jscript "%~f0"
  3. pause&exit */
  4. var TXT = WSH.StdIn.ReadLine();
  5. var fso=new ActiveXObject('scripting.FileSystemObject');
  6. fo=fso.OpenTextFile(TXT,1);//读文件
  7. var ary='';
  8. var num=0;
  9. while(!fo.AtEndOfStream)
  10. {
  11. line=fo.ReadLine();
  12. fpath=line.replace(/(.*)\t.*/,'$1');
  13. newname=line.replace(/.*\t(.*)/,'$1');
  14. if (fso.FileExists(fpath))
  15. {
  16. var bfo = fso.GetFile(fpath);//获取文件对象
  17. } else {continue;}
  18. if(ary.lastIndexOf(newname)==-1) //如果不存在重复文件
  19. {
  20. ary='';//清空上组文件名
  21. num=0;
  22. ary+=newname;//加载新的文件名
  23. } else {
  24. num+=1;
  25. }
  26. bfo.Name=newname+'_'+num+'.jpg';//重命名
  27. }
复制代码
4、txt文件和bat文件放在要处理的目录下,双击BAT文件,就可以了。

5、测试过程很快,几秒钟,11000个文件全部改好了。

最后再次感谢一下大神的无私帮助。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2