You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量循环执行命令合并EN/DE目录下同名同路径MP3文件

批量合并英德同名MP3文件解决方案

我来帮你搞定这个批量合并需求!既然你已经能正常运行单个合并命令,那我们只需要套个循环逻辑,自动遍历所有文件并处理路径映射就好。下面分Linux/macOS和Windows两种系统给出具体实现脚本:

前提条件

确保你已经安装了ffmpeg(你提到单个命令能运行,这一步应该已经满足啦)。


方案1:Linux/macOS Shell脚本

创建一个名为merge_mp3.sh的文件,复制以下代码:

#!/bin/bash

# 遍历EN文件夹下所有MP3文件
find EN -name "*.mp3" | while read en_file; do
    # 提取相对路径(去掉开头的EN/前缀)
    relative_path="${en_file#EN/}"
    # 构建对应的DE文件路径和目标ENDE文件路径
    de_file="DE/$relative_path"
    ende_file="ENDE/$relative_path"

    # 创建目标文件夹(自动创建多级目录,不存在则新建)
    mkdir -p "$(dirname "$ende_file")"

    # 执行合并命令(这里用concat流合并示例,可直接替换成你验证过的单个命令)
    # 调整顺序只需互换$en_file和$de_file的位置
    ffmpeg -i "concat:$en_file|$de_file" -acodec copy "$ende_file" -y

    echo "已完成合并:$ende_file"
done

使用步骤:

  1. 把脚本放在和EN、DE文件夹同级的目录下
  2. 打开终端,运行chmod +x merge_mp3.sh赋予执行权限
  3. 执行./merge_mp3.sh启动批量合并

方案2:Windows批处理脚本

创建一个名为merge_mp3.bat的文件,复制以下代码:

@echo off
setlocal enabledelayedexpansion

:: 遍历EN文件夹下所有MP3文件(包括子文件夹)
for /r "EN" %%f in (*.mp3) do (
    :: 提取相对路径(去掉开头的EN\前缀)
    set "relative_path=%%~pnxf"
    set "relative_path=!relative_path:EN\=!"
    
    :: 构建DE文件路径和目标ENDE文件路径
    set "de_file=DE\!relative_path!"
    set "ende_file=ENDE\!relative_path!"

    :: 创建目标文件夹(忽略已存在的报错)
    mkdir "%%~dpende_file" 2>nul

    :: 执行合并命令(替换成你验证过的单个命令即可)
    ffmpeg -i "concat:%%f|!de_file!" -acodec copy "!ende_file!" -y

    echo 已完成合并:!ende_file!
)

endlocal
pause

使用步骤:

  1. 把批处理文件放在和EN、DE文件夹同级的目录下
  2. 双击运行merge_mp3.bat即可启动批量合并

关键提示

  • 合并顺序调整:如果需要改变音频拼接顺序(比如先德文后英文),只要互换命令中对应文件路径的位置即可
  • 自定义参数:如果你的单个合并命令有特殊编码、比特率等参数,直接替换脚本里的ffmpeg命令部分就行
  • 测试建议:可以先注释掉循环逻辑,只测试单个文件的合并流程,确认没问题后再批量运行
  • 空格兼容:脚本已经处理了路径含空格的场景,不用担心文件名或文件夹名带空格导致报错

内容的提问来源于stack exchange,提问作者Gloytos htyqo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:49:30