中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求个根据文本内容重命名的批处理,谢谢了!
作者:
标题: 求个根据文本内容重命名的批处理,谢谢了! 上一主题 | 下一主题
wj36000
新手上路





积分 6
发帖 6
注册 2009-12-11
状态 离线
『楼 主』:  求个根据文本内容重命名的批处理,谢谢了!

文本文件的内容为:
karaoke.tag('歌名', '追钟');
karaoke.tag('缩写', 'ZZ');
karaoke.tag('歌手', '张学友');
karaoke.tag('字数', '2');
karaoke.tag('语种', '粤语');
karaoke.tag('歌类', '男');

文本文件的文件名为数字,可不可以制作一个根据这个文本的内容重命名这个文本文件得批处理?
比如文件名是001.txt,根据这个文本内容的第三行和第一行‘’中的字重命名为张学友-追钟.txt

本人超级菜,希望大家帮忙!谢谢了

2009-12-12 20:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 2 楼』:  


@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /r %%c in (*.txt) do (set a1=1
for /f "tokens=4 delims='" %%a in ('type "%%c"') do (if !a1!==1 set b=%%a
if !a1!==3 ren "%%c" %%a-!b!.txt
set/a a1+=1)
)




我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2009-12-12 21:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wj36000
新手上路





积分 6
发帖 6
注册 2009-12-11
状态 离线
『第 3 楼』:  

版主真是热心人啊,我试了,确实可行!

还有一个情况,就是在文件夹下有一个和这个文本文件文件名一样的视频文件,可不可以修改一下这个命令,然后可以同时重命名这两个文件?

比如说这个文件夹下有:
123.txt和123.mkv,其中123.txt的内容为:
........................................................................
karaoke.tag('歌名', '爱是全奉献');
karaoke.tag('缩写', 'ASQFX');
karaoke.tag('歌手', '郭富城');
karaoke.tag('字数', '5');
karaoke.tag('语种', '粤语');
karaoke.tag('歌类', '男');
.........................................................................
然后根据123.txt文件中第一行和第三行中' '的内容,重命名123.txt和123.mkv为:郭富城-爱是全奉献.txt和郭富城-爱是全奉献.mkv
再次感谢,帮了我大忙了!

[ Last edited by wj36000 on 2009-12-13 at 00:13 ]

2009-12-12 23:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


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


@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
for /r %%c in (*.txt) do (set a=1
for /f "tokens=4 delims='" %%a in ('type "%%c"') do (if !a!==1 set b=%%a
if !a!==3 (ren "%%c" %%a-!b!.txt
set c=%%c
ren "!c:~0,-4!.mkv" %%a-!b!.mkv)
set/a a+=1))
[ Last edited by Hanyeguxing on 2009-12-13 at 01:20 ]



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





积分 6
发帖 6
注册 2009-12-11
状态 离线
『第 5 楼』:  

多谢楼上的,验证可行,让我本来打算一年完成的工作十几分钟就搞定了:)

2009-12-13 10:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 6 楼』:  


@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
for /r %%c in (*.txt) do (set a=1
for /f "tokens=4 delims='" %%a in ('type "%%c"') do (if !a!==1 set b=%%a
if !a!==3 (ren "%%c" %%a-!b!.txt
ren "%%~nc.mkv" %%a-!b!.mkv)
set/a a+=1))




我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2009-12-13 15:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 7 楼』:  

难得版主现身了哈…… 真难得,羡慕楼主=。=



综合型编程论坛

我的作品索引
  
2009-12-13 15:58
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
wj36000
新手上路





积分 6
发帖 6
注册 2009-12-11
状态 离线
『第 8 楼』:  

多谢超版以及Hanyeguxing帮我弄的批处理,经我使用,发现Hanyeguxing
朋友的批处理对含空格的英文内容不能处理,而超版的可以,不过还是谢谢两位:)
由于我的疏忽,有一处遗漏,还请大家再帮一次忙。
假如说文件夹下有123.txt和123.mkv两个文件,其中123.txt文件文本文件内容如下:
....................................................................
karaoke.tag('歌名', '他的女人');
karaoke.tag('缩写', 'TDNR');
karaoke.tag('歌手', '刘德华');
karaoke.tag('字数', '4');
karaoke.tag('语种', '粤语');
karaoke.tag('歌类', '男');
karaoke.tag('电影', 'false');
karaoke.tag('风格', '怀旧歌');
karaoke.tag('流行', 'true');
karaoke.tag('音量', '0');
karaoke.tag('声道', '21');
karaoke.tag('FMP声道', '32');
karaoke.tag('语音', '0');
karaoke.tag('介质', '0');
karaoke.tag('时间', '2000-1-1');
karaoke.tag('歌星拼音', '');
karaoke.mtvmode :=true;
karaoke.videofilename := '';
karaoke.audiofilename := '*.wav';
karaoke.XSDVideoMode := 4;
karaoke.CommonVideo := '123.MKV';
..........................................................................
除了需要想前面一样根据内容修改文本文件和视频文件名以外,还需要修改文本文件最后一行 '123.MKV'为和视频文件一样的文件名,就像是:
karaoke.CommonVideo := '刘德华-他的女人.MKV';
再次感谢!

[ Last edited by wj36000 on 2009-12-13 at 19:58 ]

2009-12-13 19:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fengwuxzg
新手上路




积分 12
发帖 11
注册 2009-11-28
状态 离线
『第 9 楼』:  

菜鸟一个,试着写了下,测试可用
@echo off&setlocal enabledelayedexpansion
for  %%a in (*.txt) do (set /a l=1
echo %%a
for /f "tokens=4 delims='"  %%b in ('type %%a') do (if !l!==1 set j=%%b
set /a l+=1
if !l!==4 (ren %%a %%b-!j!.txt
ren %%~na.mkv %%b-!j!.mkv
for /f "tokens=1* delims=:" %%c in (%%b-!j!.txt) do (if /i "%%c" equ "karaoke.CommonVideo "  (
echo karaoke.CommonVideo := '%%b-!j!.MKV';>>temp.txt)
if /i "%%c" neq "karaoke.CommonVideo "   echo %%c%%d>>temp.txt
)
type temp.txt>%%b-!j!.txt
del temp.txt
)
)
echo %%a OVER!!
)
pause
[ Last edited by fengwuxzg on 2009-12-14 at 16:29 ]

2009-12-14 11:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wj36000
新手上路





积分 6
发帖 6
注册 2009-12-11
状态 离线
『第 10 楼』:  

多谢楼上的兄台,批处理可用!只是一次只能处理两个文件,能不能修改一下运行一次可以处理当前文件夹里所有同类的文件啊?还有就是不能处理含空格的英文内容,提示语法错误,不过这个是小问题,不影响使用:)

[ Last edited by wj36000 on 2009-12-14 at 12:35 ]

2009-12-14 12:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fengwuxzg
新手上路




积分 12
发帖 11
注册 2009-11-28
状态 离线
『第 11 楼』:  

。。。。。

LZ,原帖已修改

2009-12-14 14:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wj36000
新手上路





积分 6
发帖 6
注册 2009-12-11
状态 离线
『第 12 楼』:  

呵呵,多谢楼上的,测试成功!

2009-12-14 14:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: