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

[文本处理] 批处理歌词整理挑战

[复制链接]
发表于 2022-5-28 02:06:38 | 显示全部楼层 |阅读模式
  1. [00:00.010]铁血丹心 射雕英雄传主题曲 - 罗文/甄妮
  2. [00:00.020]词:邓伟雄
  3. [00:00.030]曲:顾嘉辉
  4. [00:28.988]女:依稀往梦似曾见
  5. [00:34.168]心内波澜现
  6. [00:39.808]男:抛开世事断仇怨
  7. [00:45.142]合:相伴 到天 边
  8. [00:49.350]男:逐草四方沙漠苍茫
  9. [00:55.452]那惧雪霜扑面
  10. [01:00.275]射雕引弓塞外奔驰
  11. [01:06.210]笑傲此生无厌倦
  12. [01:12.358]女:应知爱意似流水
  13. [01:18.050]斩不断理还乱
  14. [01:23.231]合:身经百劫也在心间恩义两难断
  15. [01:43.865]男:逐草四方沙漠苍茫
  16. [01:49.962]那惧雪霜扑面
  17. [01:54.739]射雕引弓塞外奔驰
  18. [02:00.779]笑傲此生无厌倦
  19. [02:06.930]女:应知爱意似流水
  20. [02:12.510]斩不断理还乱
  21. [02:17.836]合:身经百劫也在心间
  22. [02:23.271]恩义两难断
  23. [02:28.661]身经百劫也在心间
  24. [02:34.151]恩义两难断
复制代码
整理后
  1. [00:00.010]铁血丹心 射雕英雄传主题曲 - 罗文/甄妮
  2. [00:00.020]词:邓伟雄
  3. [00:00.030]曲:顾嘉辉
  4. [00:28.988]女:依稀往梦似曾见
  5. [00:34.168]心内波澜现
  6. [00:39.808]男:抛开世事断仇怨
  7. [00:45.142]合:相伴 到天 边
  8. [00:49.350][01:43.865]男:逐草四方沙漠苍茫
  9. [00:55.452][01:49.962]那惧雪霜扑面
  10. [01:00.275][01:54.739]射雕引弓塞外奔驰
  11. [01:06.210][02:00.779]笑傲此生无厌倦
  12. [01:12.358][02:06.930]女:应知爱意似流水
  13. [01:18.050][02:12.510]斩不断理还乱
  14. [01:23.231][02:17.836][02:28.661]合:身经百劫也在心间恩义两难断
复制代码
发表于 2022-5-28 09:17:09 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-5-28 09:38 编辑

提供一个思路,但未完全达到楼主要求(“身经百劫也在心间” “恩义两难断”两句未合并):
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims=]" %%i in (test.lrc) do set _%%j=!_%%j!%%i]
  4. for /f "tokens=1* delims=_=" %%a in ('set _') do set #%%b=%%a
  5. for /f "tokens=1* delims=#=" %%x in ('set #') do echo,%%x%%y
  6. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
smss + 1 可以

查看全部评分

发表于 2022-5-28 09:36:12 | 显示全部楼层
  1. @echo off&&setlocal enabledelayedexpansion
  2. rem 保护原文copy /y b.txt a.txt>nul
  3. set /p gc=-----输入歌词文本名----》



  4. :ks
  5.   for /f "delims=" %%i in ('type %gc%') do (
  6.       set ww=
  7.       set sj=
  8.       set bb=
  9.       set aa=
  10.       set "aa=%%i"
  11.        set bb=!aa:~11!
  12.        set aa=!aa:~0,11!
  13.        set aa=!aa:^:=!
  14.        set aa=!aa:^.=!
  15.        findstr /ic:"!bb!" %gc%>>!aa!.ini
  16.        findstr /ivc:"!bb!" %gc%>>test.ini
  17.     for /f "delims=*" %%j in ('type !aa!.ini') do (
  18.        set "sj=%%j"
  19.        set ww=!ww!!sj:~0,11!
  20.        )
  21.     echo !ww!!bb!>>55555.txt
  22.        move test.ini %gc%>nul
  23.        goto ks
  24.       )
  25. move /y 55555.txt %gc%>nul
  26. del /q *.ini>nul
  27. pause
复制代码
只能做到样子特别像,没有达到楼主的一模一样。所以怀疑楼主出题有误。
发表于 2022-5-28 10:03:27 | 显示全部楼层
回复 3# hlzj88

换个语言就 easy 了!
发表于 2022-5-28 21:56:59 | 显示全部楼层
  1. //歌词合并精简.js//拖入歌词文件
  2. lrcfile = WScript.Arguments(0);

  3. Rstream = new ActiveXObject("ADODB.Stream");
  4. Rstream.Type=2;        //类型1是二进制,2是文本
  5. Rstream.Charset = "GBK";
  6. Rstream.Open;

  7. Rstream.LoadFromFile(lrcfile);        //读歌词文件
  8. var i=n=tflag=sflag=lflag=0;
  9. var btime=[],lyric=[],tmpTime=rchr='';
  10. while(!Rstream.EOS){
  11.         Rchar=Rstream.ReadText(1);
  12.         rchr+=Rchar;

  13.         if(tflag && Rchar==']'){        //时间末,词始
  14.                 tmpTime+=rchr;rchr='';tflag=0,sflag=1;
  15.         }else if(sflag && Rchar=='\n'){        //词末
  16.                 tmpLrc=rchr;sflag=lflag=0;
  17.                 for(i=1;i<=n;i++){        //检查重复词
  18.                         if(lyric[i]==tmpLrc){lflag=1;break;}
  19.                 }
  20.                 if(lflag){btime[i]+=tmpTime;}        //合并时间
  21.                 else{n++;lyric[n]=tmpLrc;btime[n]=tmpTime;}
  22.                 rchr=tmpTime='';
  23.         }else if(Rchar=='[')tflag=1;        //时间始
  24. }
  25. Rstream.Close;

  26. joinLrc='歌词文件:'+lrcfile+'\n\n';
  27. for(i=1;i<=n;i++){
  28.         joinLrc+=btime[i]+lyric[i];
  29. }
  30. WSH.Echo(joinLrc);        //显示精简后歌词
复制代码
发表于 2022-5-30 07:09:53 | 显示全部楼层
回复 1# smss
楼主,再仔细看了你的题和结果,理解的合并规则是和你的结果的确不同。如果要达到你那样的结果,后面的代码需要可以为之。
试同贴道友的代码,也不能等于你的结果。
如果方便,麻烦你贴出你的代码,琢磨以下。

本人已老,学习bat已很不利索。其他语言困难重重。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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