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

[文件操作] 请问批处理如何将MP3文件批量合并?

手里有几千mp3小说文件,需要按顺序每10个文件,合并为一个,文件名以第一个文件命名。

如:
0000_《多情剑客无情剑》(校对版全本)作者:古龙_前言.mp3
0001_《多情剑客无情剑》(校对版全本)作者:古龙_第一章 为什么.mp3
……
0009_《多情剑客无情剑》(校对版全本)作者:古龙_第九章 不可说.mp3
……
8000_《多情剑客无情剑》(校对版全本)作者:古龙_第八千章 前言.mp3
……

实现如下所示:
0000_《多情剑客无情剑》(校对版全本)作者:古龙_前言.mp3
0010_《多情剑客无情剑》(校对版全本)作者:古龙_第十章 好处多多.mp3
0020_《多情剑客无情剑》(校对版全本)作者:古龙_第二十章 怪怪的.mp3
……

以前有个软件,MP3 Splitter Joiner Pro
v4.2 用户名:tracky  注册码:MP808-729335-31556
目的,学习批处理

TOP

回复 2# hlzj88


    试了,无法批量处理的,跟我用的 MP3剪切合并大师 差不多,也是需要手动拖10个文件合并为一个的,数千上万mp3,每次拖10个,拖到啥时候呢。。。

TOP

用笨方法搞定了,我用au3自动脚本,加上 MP3剪切合并大师,前台操作搞定了,就是无法操作电脑,不过也无所谓,晚上挂机让它操作就行。
  1. #Region ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
  2. #AccAu3Wrapper_Outfile=每10个mp3合并为一个.exe
  3. #AccAu3Wrapper_UseUpx=y
  4. #AccAu3Wrapper_UseX64=n
  5. #AccAu3Wrapper_Res_Language=2052
  6. #AccAu3Wrapper_Res_requestedExecutionLevel=None
  7. #EndRegion ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
  8. Global $Paused
  9. HotKeySet("{F1}", "Pause")
  10. HotKeySet("{F3}", "Continue")
  11. HotKeySet("{ESC}", "Terminate")
  12. ;HotKeySet("+!d", "ShowMessage") ;Shift-Alt-d
  13. WinActivate("MP3剪切合并大师V13.8 吾爱特别版(by旋风中的小聪明)")
  14. Sleep(500)
  15. ControlClick("MP3剪切合并大师V13.8 吾爱特别版(by旋风中的小聪明)","","Button1");添加mp3
  16. While 1
  17. Sleep(500)
  18.         ToolTip('Script is "Run"', 0, 0)
  19. MouseClickDrag("left", 1024, 683, 1024, 465);选择10个mp3
  20. Sleep(500)
  21. MouseClick("left", 1354, 806, 1);打开
  22. Sleep(2000)
  23. ControlClick("MP3剪切合并大师V13.8 吾爱特别版(by旋风中的小聪明)","","Button6");开始转换
  24. Sleep(180000);等3分钟转换
  25. WinWait("MP3剪切合并大师V13.8 吾爱特别版(by旋风中的小聪明)")
  26. Sleep(500)
  27. WinActivate("MP3剪切合并大师V13.8 吾爱特别版(by旋风中的小聪明)")
  28. Sleep(500)
  29. MouseClick("left", 1062, 584, 1);转换完成,确定
  30. Sleep(500)
  31. MouseClick("left", 1792, 12, 1);最小化打开的目录
  32. Sleep(500)
  33. ControlClick("MP3剪切合并大师V13.8 吾爱特别版(by旋风中的小聪明)","","SysHeader321");全选源文件
  34. Sleep(500)
  35. MouseClick("left", 820, 551, 1);选最后一个文件
  36. Sleep(500)
  37. For $ix = 1 To 10 Step 1
  38. Send("{DELETE}");清空列表的10个文件
  39. Sleep(500)
  40.     Next
  41. ControlClick("MP3剪切合并大师V13.8 吾爱特别版(by旋风中的小聪明)","","Button1");添加mp3
  42. MouseClickDrag("left", 1024, 683, 1024, 465);选择10个mp3 删除
  43. Send("{DELETE}") ;删除
  44. Sleep(500)
  45. WEnd
  46. Func Pause()
  47.         $Paused = True
  48.         TogglePause()
  49. EndFunc   ;==>Pause
  50. Func Continue()
  51.         $Paused = False
  52.         TogglePause()
  53. EndFunc   ;==>Continue
  54. Func TogglePause()
  55.         While $Paused
  56.                 Sleep(100)
  57.                ToolTip('Script is "Paused"', 0, 0)
  58.         WEnd
  59. ;        ToolTip("")
  60. EndFunc   ;==>TogglePause
  61. Func Terminate()
  62.         Exit 0
  63. EndFunc   ;==>Terminate
  64. ;Func ShowMessage()
  65.     ;    MsgBox(4096, "", "This is a message.")
  66. ;EndFunc   ;==>ShowMessage
复制代码

TOP

用2楼的3H3MP3SplitterJoinerPro 会快点,不用转换MP3的码率, 直接源码率,10秒不到就可以完成合并,转换码率的要3分钟。
  1. #Region ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
  2. #AccAu3Wrapper_Outfile=新每10个mp3合并为一个.exe
  3. #AccAu3Wrapper_UseUpx=y
  4. #AccAu3Wrapper_UseX64=n
  5. #AccAu3Wrapper_Res_Language=2052
  6. #AccAu3Wrapper_Res_requestedExecutionLevel=None
  7. #EndRegion ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
  8. Global $Paused
  9. HotKeySet("{F1}", "Pause")
  10. HotKeySet("{F3}", "Continue")
  11. HotKeySet("{ESC}", "Terminate")
  12. ;HotKeySet("+!d", "ShowMessage") ;Shift-Alt-d
  13. WinActivate("MP3 Splitter Joiner Pro")
  14. Sleep(500)
  15. ControlClick("MP3 Splitter Joiner Pro","","Button2") ;添加mp3
  16. While 1
  17. Sleep(300)
  18.         ToolTip('Script is "Run"', 0, 0)
  19. MouseClickDrag("left", 1068, 568, 1068, 353);选择10个mp3
  20. Sleep(500)
  21. MouseClick("left", 1348, 696, 1);打开
  22. Sleep(1000)
  23. ControlClick("MP3 Splitter Joiner Pro","","Button1");立即合并
  24. Sleep(1000);
  25. MouseClick("left", 930, 352, 1);选择第一个文件名
  26. Sleep(500)
  27. MouseClick("left", 855, 238, 1);回上一目录
  28. Sleep(500)
  29. MouseClick("left", 841, 471, 2);双击进入保存的文件夹
  30. Sleep(500)
  31. MouseClick("left", 1348, 696, 1);保存
  32. Sleep(6000);等待10秒转换
  33. ControlClick("MP3 Splitter Joiner Pro","","Button5");移除全部
  34. Sleep(500)
  35. ControlClick("MP3 Splitter Joiner Pro","","Button2") ;继续添加MP3
  36. Sleep(500)
  37. MouseClick("left", 855, 238, 1);返回目录
  38. Sleep(500)
  39. MouseClick("left", 830, 424, 2);双击进入原文件夹
  40. Sleep(500)
  41. MouseClickDrag("left", 1068, 568, 1068, 353);选择10个mp3 删除
  42. Sleep(500)
  43. Send("{DELETE}");删除
  44. Sleep(500)
  45. WEnd
  46. Func Pause()
  47.         $Paused = True
  48.         TogglePause()
  49. EndFunc   ;==>Pause
  50. Func Continue()
  51.         $Paused = False
  52.         TogglePause()
  53. EndFunc   ;==>Continue
  54. Func TogglePause()
  55.         While $Paused
  56.                 Sleep(100)
  57.                ToolTip('Script is "Paused"', 0, 0)
  58.         WEnd
  59. ;        ToolTip("")
  60. EndFunc   ;==>TogglePause
  61. Func Terminate()
  62.         Exit 0
  63. EndFunc   ;==>Terminate
  64. ;Func ShowMessage()
  65.     ;    MsgBox(4096, "", "This is a message.")
  66. ;EndFunc   ;==>ShowMessage
复制代码

TOP

本帖最后由 idwma 于 2022-7-25 17:55 编辑

可以试试这样
  1. setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b *.mp3') do (
  3. set /a b+=1
  4. if not defined a (set "a=%%i") else (
  5. if !b! leq 10 (copy /b "!a!"+"%%i" "!a!") else (
  6. set "a=%%i"
  7. set b=
  8. )
  9. )
  10. )
复制代码

TOP

返回列表