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

批处理小工具:自动给mp3/mp4播放器中的歌曲匹配歌词

很多人都有mp3/mp4吧,经常从电脑中拷mp3,但是要逐个的找mp3歌曲的LRC歌词可不容易,为此我写了个批处理脚本,运行它可以自动从电脑中找到与mp3歌曲匹配的歌词,并且在拷贝到mp3中的同时重命名歌词,以便于在mp3/mp4上显示。

mp3文件的命名方式有很多,比如“歌手 歌曲名”、“歌手 - 歌曲名”、“歌曲名 歌手”、“歌曲名”;mp3/mp4播放器中可能存在多个含歌曲文件的文件夹,这两点我已经考虑了,都能正确处理。唯一不足的是当电脑中存在多个歌词路径时只会处理搜索到得第一个路径中的歌词,为此提供了手工输入歌词路径的选项。

以下是代码,有兴趣的朋友可以看看,欢迎提点意见比如提高效率之类的。

  1. @echo off&color 2f
  2. rem 这部分功能是搜索U盘中所有含mp3歌曲的文件夹,并保存在list.txt中
  3. call :ad&echo.&echo.&echo.
  4. set /p pan=默认 U 盘盘符是 I,要修改则输入盘符,否则 直接回车:
  5. if not defined pan (set pan=I)
  6. if not exist %pan%: (
  7.      echo.&echo.
  8.      echo           程序没有检测到U盘,请插入U盘再试&pause>nul&cls&%0
  9.     )
  10. echo %pan%:>list.txt
  11.      (
  12. for /f "usebackq delims=" %%l in (`dir /ad-s/b/n/s %pan%:`) do (
  13.     set "dp=%%l"
  14.      call :if
  15.     )
  16. )  2>nul
  17. echo.&echo.&echo.
  18. rem 这部分主要是在D、E、F、G盘中找到歌词所在路径,由于可能不止一个文件夹里存在歌词,所以提供了手工输入方式
  19. :find
  20. set /p dd=请输入歌词所在路径,或者 直接回车 由程序自动搜索路径:
  21. if not defined dd     (
  22. for %%s in (D E F G) do (
  23. for /f "usebackq delims=" %%l in (`dir /b/n/s %%s:\*.lrc`) do (
  24.     set "lj=%%l"
  25.      call :lr
  26.           )
  27.      )
  28. )    2>nul
  29. if not exist %dd%\*.lrc (goto none)
  30. rem 这部分的功能是根据list.txt中的路径逐个给该路径下的mp3歌词
  31. :start
  32. set n=0&set num=0&set ex=0
  33.           (
  34. for /f "usebackq delims=" %%m in (`type list.txt`) do (
  35.      for /l %%i in (1 1 1550) do (echo %%i>nul)
  36.      set "loc=%%m"
  37.      for /f "usebackq delims=" %%i in (`dir /b /n "%%m\*.mp3"`) do (
  38.           cls&call :ad
  39.           echo.&echo.&echo      程序当前工作路径:%%m
  40.           echo.&echo.&echo.&echo      程序正在匹配文件:%%i
  41.           set "str=%%i"
  42.           call :copy
  43.           )
  44.       )
  45. )       2>nul
  46. del list.txt 2>nul
  47. set /a no=num-ex-n
  48. cls&call :ad
  49. echo.&echo.
  50. echo      程序共找到 %num% 首 mp3,其中 %ex% 首原来已经有歌词
  51. echo.&echo.&echo.
  52. echo     另外 %no% 首没有找到歌词,程序一共匹配了 %n% 首歌词
  53. pause>nul
  54. exit
  55. rem 这里是匹配歌词的实际操作代码,针对mp3的各种命名方式做了些处理
  56. :copy
  57. set /a num=num+1
  58. set lrc=%str:~0,-4%
  59. for /f "tokens=1,2 delims=- " %%n in ("%lrc%") do (
  60.    set "name=%%n"&set "sy=%%o"
  61. )
  62. if exist "%loc%\%lrc%.lrc" (set /a ex=ex+1&goto :eof)
  63. (copy "%dd%\*%lrc%.lrc" "%loc%\%lrc%.lrc") >nul
  64. if exist "%loc%\%lrc%.lrc" set /a n=n+1&goto :eof
  65. (copy "%dd%\%name% - %sy%.lrc" "%loc%\%lrc%.lrc") >nul
  66. if exist "%loc%\%lrc%.lrc" set /a n=n+1&goto :eof
  67. (copy "%dd%\%sy% - %name%.lrc" "%loc%\%lrc%.lrc") >nul
  68. if exist "%loc%\%lrc%.lrc" set /a n=n+1&goto :eof
  69. goto :eof
  70. rem 以下是一些标签,被上面的各部分代码调用
  71. :if
  72. if exist "%dp%\*.mp3" (echo "%dp%">>list.txt)
  73. goto :eof
  74. :lr
  75. for /f %%x in ("%lj%") do (
  76.      set "dd=%%~dpx"
  77.      goto start
  78.     )
  79. goto :eof
  80. :ad
  81. echo   *************************************************
  82. echo  *      **************************************    *
  83. echo  *     *                                     *    *
  84. echo  *     *            歌词匹配工具             *    *
  85. echo  *     *                                     *    *
  86. echo  *     *  自动给 U 盘中的 mp3 匹配 lrc 歌词  *    *
  87. echo  *     *                                     *    *
  88. echo  *      **************************************    *
  89. echo   *************************************************
  90. goto :eof
  91. :none
  92. echo.&echo.&echo.&echo 程序在本机或指定路径中没有找到 lrc 歌词,按任意键退出!&pause>nul&del list.txt
复制代码

[ 本帖最后由 wangshuping42 于 2009-9-30 18:55 编辑 ]

想想我的思路
LRC集中于一个文件夹(像千千静听那样)
dir /b LRC文件夹>>temp.txt
cd /d LRC文件夹
for /f "tokens=*" %%i in ('dir /b mp4的文件夹') do (
set a=%%~ni
find “!a!” temp.txt&& copy *!a!*.lrc mp4的文件夹\!a!.lrc
)
del temp.txt /q

有临时文件 不过代码应该少一点了吧.能不能用也是问题.............还有要配合千千静听才可以哎

[ 本帖最后由 基拉freedom 于 2009-10-1 21:37 编辑 ]
o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

楼上的想表达什么...
有些lrc歌词是两句在同一行的
[00:10.1]QQ:291445140[00:13.3]...
如何处理?

TOP

???
这个不是只需找到LRC文件然后送到MP4的文件夹内吗??
要考虑里面的内容做什么啊? 还是我理解错题目意思了???
o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

回复 1# wangshuping42


    试了什么用都没啦!

TOP

返回列表