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

[文本处理] 【已解决】批处理删除lrc歌词文件后毫秒级时间标签的一位小数

我有一个lrc歌词文件(假设是text.lrc),文件如下
--------------------------------我是分割线----------------------------------------------------------------
[ti:我爱bat]
[ar:bathome论坛]
[al:伟大的技术论坛]
[by:论坛可爱的版主]
[offset:0]
[Twilight:03.01.00]
[00:00.000]
[00:00.679]感谢bathome论坛对我的英语学习的支持
[00:02.483]如果过掉了四级,首先感谢bathome论坛的全体网友
[00:04.371]Is this your handbag?
[00:06.746]Pardon?
[00:08.997]Is this your handbag?
[00:12.185]Yes, it is.
[00:15.011]Thank you very much.
[00:17.530]
[00:18.390]
------------------------------------------我是分割线-----------------------------------------------------------------------------
批处理应该是这样编辑text.lrc的:
(1)大家看到,这个批处理的时间标签的最后小数点后都是三位的,如[00:12.185]中的185,可是我的mp4只支持小数点是两位的歌词,所有要把5删去(5这个位置代表毫秒,对歌词影响不大),时间标签就变成了[00:12.18],凡是遇到时间标签的话,都把小数点后第三位删去。
(2)[ti: [ar: [al: [by: [offset: 这五个标志符号和后面的内容都删掉(不管后面是什么)。
(3)[Twilight:03.01.00]这个标签删去。
(4)如果时间标签后没有内容的话,把这个标签删去,如[00:17.530]后没有内容就删除掉。
(5)用记事本打开这个歌词文件时,第一行在最顶行,没有空行。

即是:修改后的文件是这样的

------------------------------------------我是分割线------------------------------------------------------------------------------------
[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.
----------------------------------------我是分割线--------------------------------------------------------------------------------------
文件当然要输出为lrc文件拉,假设输出为donetext.lrc

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

评分人数

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

谢谢各位高手,小弟感激你们

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "src_file=test.lrc"&set "dst_file=donetest.lrc"
  4. (
  5. for /f "tokens=1,* delims=]" %%a in ('type "%src_file%"') do (
  6.    if not "%%b"=="" (
  7.       set "str=%%a"
  8.       set "str=!str:~,-1!"
  9.       echo.!str!]%%b
  10.    )
  11. )
  12. )>"%dst_file%"
  13. start notepad %dst_file%
复制代码

[ 本帖最后由 GodInHell 于 2009-4-22 13:14 编辑 ]

TOP

  1. @echo off
  2. set "hl=[ti: [ar: [al: [by: [offset: \[Twilight:03.01.00\]"
  3. (for /f "tokens=1* delims=[]" %%a in ('findstr /ibv "%hl%" "text.lrc"') do (
  4.    if not "%%b"=="" (
  5.       set "num=%%a"&set "var=%%b"
  6.       setlocal enabledelayedexpansion
  7.       set "var1=!var: =!"
  8.       if not "!var1!"=="" echo [!num:~,8!]!var!
  9.       endlocal
  10. )))>donetext.lrc
  11. start "" "notepad.exe" "donetext.lrc"
复制代码
技术问题请到论坛发帖求助!

TOP

第三点能否总结到第二点里面?
(2)[ti: [ar: [al: [by: [offset: [Twilight:这六个标志符号和后面的内容都删掉(不管后面是什么)。
这样做可以吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表