中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助读文件取参数查找重命名脚本!
作者:
标题: 求助读文件取参数查找重命名脚本! 上一主题 | 下一主题
sunnywang
新手上路





积分 3
发帖 3
注册 2010-4-14
状态 离线
『楼 主』:  求助读文件取参数查找重命名脚本!

求助读文件取参数查找重命名脚本!
一个文件夹里有
number.txt

rec一个目录

number.txt 内容如下:
02868220941,1004-12671-02868220941
02886919508,1037-9397-02886919508
02826222956,1009-13713-02826222956
08162280663,1058-11678-08162280663

rec目录内容如下:
2009-04-13  19:30           221,244 130420_08262616293_42.wav
2009-04-13  19:30           219,708 135202_015036101152_38.wav
2009-04-13  19:30           219,964 142057_08522821265_38.wav
2009-04-13  19:30           219,964 180331_02866898024_40.wav
2009-04-13  19:30           218,940 183010_08322275007_40.wav
2009-04-13  19:30           220,732 183829_02424317312_6.wav
2009-04-13  19:30           220,732 185012_02485896095_35.wav
2009-04-13  19:30           220,220 185106_08313544365_41.wav
2009-04-13  19:30           219,964 190255_02425787217_1.wav
2009-04-13  19:30           220,732 194225_02785890254_9.wav
2009-04-13  19:30         2,861,372 200620_08162280663_41.wav
2009-04-13  19:30           219,964 200940_02783531322_10.wav
2009-04-13  19:30         2,961,980 201734_02826222956_37.wav
2009-04-13  19:30           220,732 201832_08162731618_38.wav
2009-04-13  19:30         2,246,460 202733_02886919508_39.wav
2009-04-13  19:30           220,220 203512_02883387126_40.wav
2009-04-13  19:30         2,901,564 203527_02868220941_33.wav
2009-04-13  19:30           219,452 203954_037166021059_10.wav
2009-04-13  19:30           220,220 204107_02838226987_38.wav

现要求顺序从number.txt 读取数据,先读第一行第一列如:02868220941
然后到rec目录中查找含有这个字串的所有文件,找出后copy到另外一个目录,再把文件名中含有02868220941的部分替换为第一行第二列的参数:1004-12671-02868220941。
执行完后再顺序开始第二行,知道最好,求助各位大侠帮助,这个脚本如何下手,万分感谢!

[ Last edited by sunnywang on 2010-4-15 at 13:22 ]

2010-4-15 13:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 2 楼』:  

使用for /f以英文逗号解析文件number.txt,第一列为%%a,第二列为%%b,执行set "%%a=%%b"全部定义为变量。
然后结合dir使用for /f解析,_也作为分隔符,例如204107_02838226987_38.wav分隔后,直接把02838226987赋给变量%%j,前面的给%%i,后面的给%%k。接着使用if defined %%j判断%%j是否被定义,如果定义则执行copy,copy时目标文件直接使用%%i_!%%j!_%%k。



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-4-15 13:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sunnywang
新手上路





积分 3
发帖 3
注册 2010-4-14
状态 离线
『第 3 楼』:  

非常感谢!
在下生手,能否给个范例!谢谢!

2010-4-15 13:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 4 楼』:  


@echo off&setlocal enabledelayedexpansion
for /F "tokens=1,2 delims=," %%a in (number.txt) do set "%%a=%%b"
for /F "tokens=1-3 delims=_" %%a in ('dir \rec /b') do if defined %%b echo.copy rec\%%a_%%b_%%c D:\%%a_!%%b!_%%c
pause
运行后查看是否是要这样的,是则把echo.去掉,正式运行



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-4-15 14:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sunnywang
新手上路





积分 3
发帖 3
注册 2010-4-14
状态 离线
『第 5 楼』:  

好用,非常感谢

2010-4-15 15:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: