![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 12:36 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已解决]按要求实现批量改名(非一般的更名) |
| 可打印版本 6,129 / 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 |