整理后- [00:00.010]铁血丹心 射雕英雄传主题曲 - 罗文/甄妮
- [00:00.020]词:邓伟雄
- [00:00.030]曲:顾嘉辉
- [00:28.988]女:依稀往梦似曾见
- [00:34.168]心内波澜现
- [00:39.808]男:抛开世事断仇怨
- [00:45.142]合:相伴 到天 边
- [00:49.350][01:43.865]男:逐草四方沙漠苍茫
- [00:55.452][01:49.962]那惧雪霜扑面
- [01:00.275][01:54.739]射雕引弓塞外奔驰
- [01:06.210][02:00.779]笑傲此生无厌倦
- [01:12.358][02:06.930]女:应知爱意似流水
- [01:18.050][02:12.510]斩不断理还乱
- [01:23.231][02:17.836][02:28.661]合:身经百劫也在心间恩义两难断
复制代码
作者: qixiaobin0715 时间: 2022-5-28 09:17
本帖最后由 qixiaobin0715 于 2022-5-28 09:38 编辑
提供一个思路,但未完全达到楼主要求(“身经百劫也在心间” “恩义两难断”两句未合并):- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1* delims=]" %%i in (test.lrc) do set _%%j=!_%%j!%%i]
- for /f "tokens=1* delims=_=" %%a in ('set _') do set #%%b=%%a
- for /f "tokens=1* delims=#=" %%x in ('set #') do echo,%%x%%y
- pause
复制代码
作者: hlzj88 时间: 2022-5-28 09:36
- @echo off&&setlocal enabledelayedexpansion
- rem 保护原文copy /y b.txt a.txt>nul
- set /p gc=-----输入歌词文本名----》
-
-
-
- :ks
- for /f "delims=" %%i in ('type %gc%') do (
- set ww=
- set sj=
- set bb=
- set aa=
- set "aa=%%i"
- set bb=!aa:~11!
- set aa=!aa:~0,11!
- set aa=!aa:^:=!
- set aa=!aa:^.=!
- findstr /ic:"!bb!" %gc%>>!aa!.ini
- findstr /ivc:"!bb!" %gc%>>test.ini
- for /f "delims=*" %%j in ('type !aa!.ini') do (
- set "sj=%%j"
- set ww=!ww!!sj:~0,11!
- )
- echo !ww!!bb!>>55555.txt
- move test.ini %gc%>nul
- goto ks
- )
- move /y 55555.txt %gc%>nul
- del /q *.ini>nul
- pause
复制代码
只能做到样子特别像,没有达到楼主的一模一样。所以怀疑楼主出题有误。
作者: xczxczxcz 时间: 2022-5-28 10:03
回复 3# hlzj88
换个语言就 easy 了!
作者: cutebe 时间: 2022-5-28 21:56
- //歌词合并精简.js//拖入歌词文件
- lrcfile = WScript.Arguments(0);
-
- Rstream = new ActiveXObject("ADODB.Stream");
- Rstream.Type=2; //类型1是二进制,2是文本
- Rstream.Charset = "GBK";
- Rstream.Open;
-
- Rstream.LoadFromFile(lrcfile); //读歌词文件
- var i=n=tflag=sflag=lflag=0;
- var btime=[],lyric=[],tmpTime=rchr='';
- while(!Rstream.EOS){
- Rchar=Rstream.ReadText(1);
- rchr+=Rchar;
-
- if(tflag && Rchar==']'){ //时间末,词始
- tmpTime+=rchr;rchr='';tflag=0,sflag=1;
- }else if(sflag && Rchar=='\n'){ //词末
- tmpLrc=rchr;sflag=lflag=0;
- for(i=1;i<=n;i++){ //检查重复词
- if(lyric[i]==tmpLrc){lflag=1;break;}
- }
- if(lflag){btime[i]+=tmpTime;} //合并时间
- else{n++;lyric[n]=tmpLrc;btime[n]=tmpTime;}
- rchr=tmpTime='';
- }else if(Rchar=='[')tflag=1; //时间始
- }
- Rstream.Close;
-
- joinLrc='歌词文件:'+lrcfile+'\n\n';
- for(i=1;i<=n;i++){
- joinLrc+=btime[i]+lyric[i];
- }
- WSH.Echo(joinLrc); //显示精简后歌词
复制代码
作者: hlzj88 时间: 2022-5-30 07:09
回复 1# smss
楼主,再仔细看了你的题和结果,理解的合并规则是和你的结果的确不同。如果要达到你那样的结果,后面的代码需要可以为之。
试同贴道友的代码,也不能等于你的结果。
如果方便,麻烦你贴出你的代码,琢磨以下。
本人已老,学习bat已很不利索。其他语言困难重重。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |