[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理删掉lrc歌词文件的时间和其他标签后输出到文本

貌似管理员已经帮我解决了,大家有更好的方案的话也帮我贴出来。
有一个帖子和这个例子是相同的,但是处理过程是不一样的。
我有一个lrc歌词文件(假设是text.lrc),文件如下
--------------------------------我是分割线----------------------------------------------------------------
[ti:我爱bat]
[ar:bathome论坛]
[al:伟大的技术论坛]
[by:论坛可爱的版主]
[offset:0]
[Twilight:03.01.00]
[00:00.00]
[00:00.67]感谢bathome论坛对我的英语学习的支持
[00:02.48]如果过掉了四级,首先感谢bathome论坛的全体网友
[00:04.37]Is this your handbag?
[00:06.74]Pardon?
[00:08.99]Is this your handbag?
[00:12.18]Yes, it is.
[00:15.01]Thank you very much.
[00:17.53]
[00:18.39]
------------------------------------------我是分割线-----------------------------------------------------------------------------

我想这样处理这个文件
(1)[ti: [ar: [al: [by: [offset: 这五个标志符号和后面的内容都删掉(不管后面是什么)。
(2)[Twilight:03.01.00]这个标签删去。

(3)所有时间标签,如[00:15.01],[00:12.18]都被删掉。
即是最后处理后的文件是这样的,见分割线下的内容(文件输出为text.txt)
-----------------------------------------我是分割线----------------------------------------------------------------------
感谢bathome论坛对我的英语学习的支持
如果过掉了四级,首先感谢bathome论坛的全体网友
Is this your handbag?
Pardon?
Is this your handbag?
Yes, it is.
Thank you very much.


[ 本帖最后由 ax2623682 于 2009-4-22 20:06 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

  实际上,你的需求可以归纳为:
  1、若第一个]后没有内容,则忽略此行;
  2、若第一个]后有内容,则把第一个]之后的所有内容输出。

  如果我的归纳和你的真实意图完全吻合的话,可以这样做:
  1. @echo off
  2. cd.>test.txt
  3. for /f "tokens=1* delims=]" %%i in ('type text.lrc') do (
  4.     if not "%%j"=="" (echo.%%j)>>test.txt
  5. )
  6. pause
复制代码
  注意:当要输出的内容中含有特殊字符的话,这段代码会出错。如果你的文件中没有特殊字符的话,那我就偷个懒,不再给出具备更大兼容性的代码了,毕竟要想更完美,是需要付出一些代价的:比如效率更低。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

jm 写急了吧,漏了个  delims=]
另外楼主说的是删除时间标签和指定的标签,不知道还有没有即不要删除又不是时间标签的标签呢?

[ 本帖最后由 随风 于 2009-4-22 19:26 编辑 ]
技术问题请到论坛发帖求助!

TOP

回复 3楼 的帖子

你好,版主,除了我上面说的三点外,如果时间标签后的正文含有“[某内容]”的话,不要删除。除此之外,没有其他标签。

令外,namejm管理员你好,后面可能含有特殊代码哦,帮我写个兼容性好点的代码吧,呵呵。而且管理员你这个代码是有问题的哦,输出像下面这样的东西了。
this your handbag?
this your handbag?
it is.
you very much.

[ 本帖最后由 ax2623682 于 2009-4-22 19:38 编辑 ]

TOP

原帖由 ax2623682 于 2009-4-22 19:34 发表
如果时间标签后的正文含有“[某内容]”的话,不要删除。

不明白你这句话的意思。
技术问题请到论坛发帖求助!

TOP

原帖由 随风 于 2009-4-22 19:36 发表

不明白你这句话的意思。


例如
[00:12.18]Do you know the community called [WTO].
[00:15.01]Yes, I know.

这个[WTO]就保留。修改后应该是:
Do you know the community called [WTO].
Yes, I know.

TOP

  呵呵,确实是写急了,忘了把 delims=] 写上,已经添加了,应该能正确处理不含特殊字符的内容了。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复 2楼 的帖子

可以处理特殊字符吧。%%a 可以躲过预处理;也没有开启变量延迟,不会进行第二次处理。

TOP

貌似管理员已经帮我解决了,大家有更好的方案的话也帮我贴出来。

TOP

返回列表