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

[文件操作] [已解决]批处理怎样利用ffmpeg合并mp3文件

[复制链接]
发表于 2023-7-27 10:33:31 | 显示全部楼层 |阅读模式
本帖最后由 qd2024 于 2023-7-28 22:41 编辑

当前目录下有若干文件夹,每个文件夹时有若干MP3文件,每个文件里的MP3文件名前都有4位自然数编号

想以每个文件夹为单位,以自然数编号为顺序,把每个文件夹里的所有MP3文件合并为一个MP3文件,
新生成的MP3文件文件名与对应的文件夹名相同,
新生成的MP3文件与BAT文件放在同一级目录下。


举例文件
链接:https://pan.baidu.com/s/1l4Gw_QlPD9JHCbiAx-rV8w?pwd=gxi1
提取码:gxi1
--来自百度网盘超级会员V9的分享


感谢

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-7-27 11:07:30 | 显示全部楼层
  1. @echo off
  2. chcp 65001 >nul
  3. rem 批处理保存为utf-8编码格式,需要ffmpeg
  4. for /d %%d in (*) do (
  5.         pushd "%%d"
  6.         (for /f "delims=" %%i in ('dir /b /a-d *.mp3 ^|sort') do (
  7.                 echo file '%%~fi'
  8.         ))>xxx.txt
  9.         if exist xxx.txt if not exist "%~dp0%%~nxd.mp3" (
  10.                 "%~dp0ffmpeg.exe" -f concat -safe 0 -i xxx.txt -c copy "%~dp0%%~nxd.mp3"
  11.         )
  12.         del xxx.txt 2>nul
  13.         popd
  14. )
  15. pause
复制代码
 楼主| 发表于 2023-7-27 11:22:53 | 显示全部楼层
回复 2# 77七


    感谢
 楼主| 发表于 2023-7-27 11:55:42 | 显示全部楼层
回复 2# 77七


    好像是因为文件名里有特殊字符  合并过程 终止了  合并的不完整

帮忙修改一下  谢谢



举例文件
链接:https://pan.baidu.com/s/1l4Gw_QlPD9JHCbiAx-rV8w?pwd=gxi1
提取码:gxi1
--来自百度网盘超级会员V9的分享
发表于 2023-7-27 13:02:46 | 显示全部楼层
回复 4# qd2024


   文件名
  1. 0106do①s⑶(1)
  2. 0040to①s⑴(1)
  3. 0015I'm=I am(1)
复制代码


太特殊了,我不会处理
只能重命名。
以下代码执行完第一个,再执行第二个,注意编码格式。
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. setlocal enabledelayedexpansion
  4. for /d %%d in (*) do (
  5.         robocopy "%%d" "%%d-copy" *.mp3
  6.         pushd "%%d-copy"
  7.         set n=100000
  8.         (for /f "delims=" %%i in ('dir /b /a-d *.mp3 ^|sort') do (
  9.                 set /a n+=1
  10.                 ren "%%i" "!n:~-5!.mp3"
  11.                 echo file '!n:~-5!.mp3'
  12.         ))>xxx.txt
  13.         popd
  14. )
  15. exit
复制代码


  1. @echo off
  2. chcp 65001 >nul
  3. rem 批处理保存为utf-8编码格式,需要ffmpeg
  4. for /f "delims=" %%d in ('dir /b /ad ^|find /v "-copy"') do (
  5.         pushd "%%d-copy"
  6.         if exist xxx.txt if not exist "%~dp0%%~nxd.mp3" (
  7.                 ffmpeg -f concat -safe 0 -i xxx.txt -c copy "%~dp0%%~nxd.mp3"
  8.         )
  9.         del xxx.txt 2>nul
  10.         popd
  11.         rd /s /q "%%d-copy"
  12. )
  13. pause
复制代码
发表于 2023-7-27 13:13:19 | 显示全部楼层
ffmpeg 改为 "%~dp0ffmpeg.exe"
经常用的话,可以添加到计算机的环境变量
 楼主| 发表于 2023-7-27 16:31:59 | 显示全部楼层
回复 6# 77七


    辛苦了  我试试
 楼主| 发表于 2023-7-27 16:54:57 | 显示全部楼层
本帖最后由 qd2024 于 2023-7-27 16:59 编辑

回复 5# 77七


    我推断是因为有特殊除号的原因,造成
             这一步  http://www.bathome.net/thread-66889-1-1.html
        还有这一步 http://www.bathome.net/thread-66899-1-1.html     

      这两步生成后文件都有丢失,

能不能这样,先清除当前目录及子目录下所有MP3文件文件名中的特殊符号,再执行

  http://www.bathome.net/redirect. ... 6899&pid=271596这个代码     因为每个文件夹内的文件都有4位编号,所以文件顺序不会乱

特殊符号包括,“半角空格 … ?. , ' = ① ② ③ ④ ⑤ ⑥ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂”
目前想到的是这些,在引号中用半角空格分开,如果再有新的,我再手动处理。


或者可以把MP3文件改名,不是重新生成,而是直接改名,只保留前4位序号,是否可行,这样就没有特殊符号的干扰了

孩子初三了刚刚醒悟要学习,单词突击中,万分感谢
发表于 2023-7-27 17:44:40 | 显示全部楼层
本帖最后由 77七 于 2023-7-27 17:53 编辑

回复 8# qd2024

  1. @echo off
  2. rem http://www.bathome.net/redirect.php?goto=findpost&ptid=63860&pid=259594
  3. rem 删除当前目录及子目录下 所有文件夹名、文件名中的符号; “_”、“-”、“.” 这三个除外,我自己瞎改的。
  4. powershell "dir -rec|foreach{ren $_.fullname $($_.name -replace '[^0-9a-z\u4e00-\u9fff\s\-\w\.]')}"
  5. exit
复制代码


那就使用原始代码好了,每次先使用上面的代码清除文件(夹)名称中的符号。忽略报错信息。
 楼主| 发表于 2023-7-27 18:04:06 | 显示全部楼层
本帖最后由 qd2024 于 2023-7-27 18:08 编辑

回复 9# 77七


     “_”、“-”、“.” 这三个除外,我自己瞎改的。    这个是什么意思  没明白


运行报错    我没有弄明白  截图放百度盘了
举例文件
链接:https://pan.baidu.com/s/1l4Gw_QlPD9JHCbiAx-rV8w?pwd=gxi1
提取码:gxi1
--来自百度网盘超级会员V9的分享
发表于 2023-7-27 18:13:59 | 显示全部楼层
回复 10# qd2024


   
直接使用就行,忽略报错信息
 楼主| 发表于 2023-7-27 19:13:55 | 显示全部楼层
本帖最后由 qd2024 于 2023-7-27 19:40 编辑

回复 11# 77七


    powershell "dir -rec|foreach{ren $_.fullname $($_.name -replace '[^0-9a-z\u4e00-\u9fff\s\-\w]')}"

我把后面的.删除了  但是扩展名里的.也没了

怎样才能不改名扩展名


特殊符号还有" ( "  ")"

------------
sb. can't wait      类似的 .'没用被删除
发表于 2023-7-27 19:47:54 | 显示全部楼层
回复 12# qd2024


   
我测试9楼的代码,正常删除 " ( "  ")",重复执行试试。
 楼主| 发表于 2023-7-27 20:00:56 | 显示全部楼层
回复 13# 77七


    检查了一下  是我的原始文件出错了  我再试试
 楼主| 发表于 2023-7-28 08:11:45 | 显示全部楼层
本帖最后由 qd2024 于 2023-7-28 08:37 编辑

回复 13# 77七


0108take part in sth.
0100take sb.s temperature
0129cant help doing sth.

帮我想个办法,让9楼代码,在执行时,删除文件名中的“.”,比如sb.  sth.后面的点,
目前发现 只要单个文件中有“.”,执行合并文件后,对应该的单词短语音频就会重复好几遍,而且音频会变调。

在进行中英文合并时,不能把单个单词的英文和中文音频合并成一个文件,只提取到了英文的音频。

我放文件到百度盘了
链接:https://pan.baidu.com/s/1l4Gw_QlPD9JHCbiAx-rV8w?pwd=gxi1
提取码:gxi1
--来自百度网盘超级会员V9的分享

=============================
再帮我看看这个 文件变静音。
http://www.bathome.net/viewthread.php?tid=66911&extra=
感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 06:04 , Processed in 0.028338 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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