[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批量重命名后存在重复文件名,遇到重复文件名自动添加递增序号

本帖最后由 我是卖灯的 于 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个文件

已经搜了一晚上了,实在找不到,软件也没有,批处理也不会
大神救救我,该怎么写批处理命令

回复 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个文件全部改好了。

最后再次感谢一下大神的无私帮助。
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

建议跳过Excel直接用BAT处理,请详细描述一下根据什么规律重命名?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

看我签名加QQ,我需要了解EXCEL处理的文件细节
QQ 33892006

TOP

返回列表