Board logo

标题: [文本处理] BAT如何批量提取文本中的某段语句? [打印本页]

作者: bdwg    时间: 2008-3-3 12:44     标题: BAT如何批量提取文本中的某段语句?

karaoke := CreateKaraokeObject;
karaoke.rows := 2;
karaoke := CreateKaraokeObject;
karaoke.clear;
// 歌曲附加信息(便于检索)
karaoke.tag('歌名', 'BAD BOY');
karaoke.internalnumber := 6559;  // 歌曲编号
karaoke.tag('缩写', 'BADBOY');
karaoke.tag('歌手', '张惠妹');
karaoke.tag('字数', '2');
karaoke.tag('语种', '国语');
karaoke.tag('歌类', '男人');
karaoke.tag('电影', 'false');
karaoke.tag('风格', '流行');
karaoke.tag('流行', 'true');
karaoke.tag('音量', '80');
karaoke.tag('声道', '2');
karaoke.tag('语音', '0');
karaoke.tag('介质', '10');
karaoke.tag('时间', '2000-09-20');
karaoke.tag('歌星拼音', 'Z');
karaoke.mtvmode :=true;
karaoke.videofilename := '';
karaoke.audiofilename := '*.wav';
karaoke.XSDVideoMode := 4;
karaoke.CommonVideo := '00001.rmvb';



这是个MTV文件的关联文件...我想批量提取其中的歌手名..还有歌名...然后集中在一个记事本内..

望高手指点指点........还有..本人是个菜得不得了的菜鸟...所以大虾门...尽量有多清楚最好是写得多清楚哈...

小弟在此谢过了............
作者: youxi01    时间: 2008-3-3 13:16

提几点建议:
1、不要使用 “跪求”等丧失尊严的词语!
2、把你的问题尽量描述清楚,不要使用“....”以求简便,除非它们是同一类别的。

说实在话,我确实没弄清楚,你要处理的这个关联文件究竟是单个的,还是一类(很多个类似文件)的?
作者: bdwg    时间: 2008-3-3 13:42     标题: 回复 2楼 的帖子

我知错了,以后决不用"跪求"
我刚才发的是其中一个文本的内容,这种文本有很多,他们是一组递进形式的文件.比如:   
"1.ksc       2.ksc.............."文本的格式全部是一样的.
我想提取的就是 (张惠妹BAD BOY).
作者: youxi01    时间: 2008-3-3 17:46

对于单篇文章的歌手、歌曲提取代码:
  1. @echo off &setlocal enabledelayedexpansion
  2. call :ReadFile 5 MusicName
  3. call :ReadFile 8 Singer
  4. echo 歌曲名:%MusicName%      歌手:%Singer%
  5. pause>nul
  6. :'/*/////////////读取文件指定行/////////
  7. :'/*注意:本函数没有通用性,没考虑空行等;
  8. :ReadFile line res
  9. for /f "skip=%1 delims=" %%i in (test.txt) do (
  10.   set "var=%%i"
  11.   for /f "delims=' tokens=4" %%a in ("!var!") do set %2=%%a
  12.   goto :eof
  13. )
复制代码
如果要处理一系列文件,只要再稍微改动,用一个for循环即可!!
作者: 随风    时间: 2008-3-3 18:03

:
  1. @echo off&cd.>gequ.txt
  2. for %%i in (*.ksc) do (
  3.   for /f "tokens=2,4 delims='" %%a in ('type "%%i"') do (
  4.     if /i "%%a"=="歌名" set gm=%%b
  5.     if /i "%%a"=="歌手" set gs=%%b
  6.   )
  7.   >>gequ.txt call echo %%gs%%  %%gm%%
  8. )
  9. start gequ.txt
复制代码

[ 本帖最后由 随风 于 2008-3-3 18:19 编辑 ]
作者: bdwg    时间: 2008-3-11 16:08

谢谢两位!有个问题,我用了随风大大的批处理之后,有部分内容提取 没按歌曲的顺序,  我想问下这批处理是按什么顺序提取的?
作者: 随风    时间: 2008-3-11 17:00

没按歌曲的顺序?
什么意识?
作者: bdwg    时间: 2008-3-11 18:09     标题: 歌曲

这个是文件列表,
我进行批处理之后,导出的gequ.txt内容不是按顺序的。

补充一下:就是说,进行批处理的时候,它能不能按着顺序来提取,然后它提取出来的文字又可以按着这个顺序来排列。这样的话,我到时候改歌名的话,就可以按着他所提取文字的顺序来改了。谢谢




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2