中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-05 14:53
48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]按要求实现批量改名(非一般的更名)
可打印版本  6,143 / 43
第1楼 frankkf 发表于 2007-07-31 11:19
初级用户 发帖 43 积分 88
[已解决]按要求实现批量改名(非一般的更名)
如题: 就是说如果某个目录下有一些文件.比如,D盘根目录下File子目录下, 有一些DOC文件,同时有一个txt列表文件, 如file.txt。假如File目录下的文件是这些:
记事本.doc
文档.doc
女人花.doc
.......

file.txt文件里面对应的是这些doc更名后的文件名,如:
你好.doc
对不起.doc
不错.doc
........

其实更清楚一点就是有2栏文件名列表:
记事本.doc -〉 你好.doc
文档.doc -〉 对不起.doc
女人花.doc -〉 不错.doc
........

记事本.doc对应于你好.doc,女人花.doc对应于不错.doc, 其余以此类推.
当然对应的顺序事先已经给出,也就是原文件名和要求改的文件名是一一对应的。

现在希望能用批处理一次实现更名,请大家帮忙啊。

[ Last edited by frankkf on 2007-7-31 at 04:28 PM ]
第2楼 qzwqzw 发表于 2007-07-31 11:30
银牌会员 发帖 636 积分 2,343
首先dir /b *.doc 出另外一个表
这就变成了对两个表的同步遍历的通用问题

我一般会用for /l进行遍历
然后在当中用for /f来取行

当然也可以直接for /f 遍历整个路径下的*.doc
然后在当中用变量计量行号
并用此变量到file.txt中取对应行

不过前提是保证这两个表的表项确实是一一对应的
否则你的恢复工作将会很麻烦
第3楼 frankkf 发表于 2007-07-31 11:42
初级用户 发帖 43 积分 88
如果现在*.doc文件遍历出来和file.txt中的顺序不一样,但是有另外一个name.txt文件,里面列出的*.doc文件顺序和file.txt中要更名的顺序是一一对应的
这样能否实现改名?
改的*.doc文件还是在File文件夹下
第4楼 qzwqzw 发表于 2007-07-31 11:45
银牌会员 发帖 636 积分 2,343
按照我上面的说法当然是可以的
就只需要同步遍历两个表就可以了

当然,为了安全起见
最好不要把name.txt和file.txt放在File路径下
第5楼 frankkf 发表于 2007-07-31 11:49
初级用户 发帖 43 积分 88
按你说的这个怎么实现
能否帮忙写个代码
我对for /f这些还不是很熟
第6楼 qzwqzw 发表于 2007-07-31 12:04
银牌会员 发帖 636 积分 2,343
事件关系,仅给出原型代码
未作实际测试
实际应用还需要自己完善和修改一下

批处理放在File上一级文件夹下
源文件名放在File上一级文件夹下的srcname.txt
目标文件名放在File上一级文件夹下的dstname.txt
先运行看一下显示结果是否符合预期
如果符合再去掉ren前面的echo正式改名

以下代码根据7楼的问题反馈进行修改



[ Last edited by qzwqzw on 2007-7-31 at 09:41 PM ]
第7楼 frankkf 发表于 2007-07-31 12:39
初级用户 发帖 43 积分 88
提示:%i delims= " was unexpected at this time
不知道是什么原因
第8楼 frankkf 发表于 2007-07-31 12:44
初级用户 发帖 43 积分 88
按照前面讲的
在File文件夹上一级文件夹下放置本批处理文件和srcname.txt,dstname.txt
File文件夹下有文件记事本.doc,文档.doc,女人花.doc等
第9楼 slore 发表于 2007-07-31 13:42
铂金会员 发帖 2,478 积分 5,212
源文件和目标文件如果自己写的话为什么不写在一起?
RenList.txt:
记事本.doc 你好.doc
文档.doc 对不起.doc
女人花.doc 不错.doc

这样的话方便很多。。。
第10楼 frankkf 发表于 2007-07-31 13:45
初级用户 发帖 43 积分 88
原来对应的原文件名和目标文件名是在一个excel表格中的2列,
但是不知用批处理如何调用excel
所以想到用2个txt文件
如果用一个Renlist.txt不好识别

[ Last edited by frankkf on 2007-7-31 at 01:52 PM ]
第11楼 jmz573515 发表于 2007-07-31 14:13
银牌会员 发帖 464 积分 1,212
VBS可以读取EXCEL。
第12楼 frankkf 发表于 2007-07-31 14:20
初级用户 发帖 43 积分 88
可是我vbs不会啊
刚开始学批处理
如果有可以用vbs实现这个也可以
第13楼 jmz573515 发表于 2007-07-31 14:22
银牌会员 发帖 464 积分 1,212
原来对应的原文件名和目标文件名是在一个excel表格中的2列,说说是怎么个规律?
如:1,3,5...源文件名
2,4,6...目标文件名??
第14楼 frankkf 发表于 2007-07-31 14:26
初级用户 发帖 43 积分 88
学批处理,所以想到能否用批处理实现
感觉上实现这个应该可以
但具体怎么弄不清楚

所以在这里请教各位大侠了
第15楼 frankkf 发表于 2007-07-31 14:27
初级用户 发帖 43 积分 88
就是这样,如下:
A B
记事本 你好
文档 对不起
女人花 不错
.... ....

差不多是这个样子

注意:文件的扩展名为doc,如果是在excel表格中则扩展名doc会去掉,
直接给出文件名。

[ Last edited by frankkf on 2007-7-31 at 02:38 PM ]
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023