找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30783|回复: 8

[文本处理] BAT如何批量提取文本中的某段语句?

[复制链接]
发表于 2008-3-3 12:44:10 | 显示全部楼层 |阅读模式
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文件的关联文件...我想批量提取其中的歌手名..还有歌名...然后集中在一个记事本内..

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

小弟在此谢过了............
发表于 2008-3-3 13:16:34 | 显示全部楼层
提几点建议:
1、不要使用 “跪求”等丧失尊严的词语!
2、把你的问题尽量描述清楚,不要使用“....”以求简便,除非它们是同一类别的。

说实在话,我确实没弄清楚,你要处理的这个关联文件究竟是单个的,还是一类(很多个类似文件)的?
 楼主| 发表于 2008-3-3 13:42:01 | 显示全部楼层

回复 2楼 的帖子

我知错了,以后决不用"跪求"
我刚才发的是其中一个文本的内容,这种文本有很多,他们是一组递进形式的文件.比如:   
"1.ksc       2.ksc.............."文本的格式全部是一样的.
我想提取的就是 (张惠妹BAD BOY).
发表于 2008-3-3 17:46:36 | 显示全部楼层
对于单篇文章的歌手、歌曲提取代码:
  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循环即可!!

评分

参与人数 1PB +1 收起 理由
bdwg + 1

查看全部评分

发表于 2008-3-3 18:03:05 | 显示全部楼层
:
  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 编辑 ]

评分

参与人数 1PB +2 收起 理由
bdwg + 2

查看全部评分

 楼主| 发表于 2008-3-11 16:08:00 | 显示全部楼层
谢谢两位!有个问题,我用了随风大大的批处理之后,有部分内容提取 没按歌曲的顺序,  我想问下这批处理是按什么顺序提取的?
发表于 2008-3-11 17:00:55 | 显示全部楼层
没按歌曲的顺序?
什么意识?
 楼主| 发表于 2008-3-11 18:09:55 | 显示全部楼层

歌曲

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

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

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 08:23 , Processed in 0.021567 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表