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

如何用Sox编写Bat脚本批量混合成对WAV文件?

批量混合成对WAV文件的Bat脚本实现

实现思路

  • 遍历当前文件夹中所有不带(2)后缀的.wav文件
  • 对每个基础文件,检查对应的文件名 (2).wav是否存在
  • 若存在,调用Sox将两个文件混合,输出为文件名 (3).wav

完整Bat脚本

@echo off
setlocal enabledelayedexpansion

:: 遍历所有不带(2)后缀的WAV文件
for %%f in (*.wav) do (
    set "filename=%%~nf"
    set "extension=%%~xf"
    :: 跳过带(2)的文件,只处理基础文件
    if not "!filename:~-4!"==" (2)" (
        set "pair_file=!filename! (2)!extension!"
        :: 检查配对文件是否存在
        if exist "!pair_file!" (
            set "output_file=!filename! (3)!extension!"
            :: 调用Sox混合两个文件,-m参数启用音频混合模式
            sox -m "%%f" "!pair_file!" "!output_file!"
            echo 已生成: !output_file!
        ) else (
            echo 未找到配对文件: !pair_file!,跳过处理%%f
        )
    )
)

endlocal
pause

关键细节说明

  • setlocal enabledelayedexpansion:启用延迟变量扩展,解决循环中变量赋值的实时读取问题
  • sox -m:Sox的核心混合参数,会将两个音频文件按比例混合(默认等音量),如果需要调整音量,可以添加vol效果,比如sox -m "%%f" vol 0.8 "!pair_file!" vol 0.8 "!output_file!"
  • 引号包裹文件路径:处理文件名包含空格的场景,避免命令解析错误
  • 跳过(2)后缀文件:确保只以基础文件为起点配对,避免重复处理

注意事项

  • 确保Sox已添加到系统环境变量,若未添加,将脚本中的sox替换为Sox的完整路径,比如"C:\Program Files\sox-14.4.2\sox.exe"
  • 若(3)版本文件已存在,Sox会直接覆盖,如需避免覆盖,可在生成前添加if not exist "!output_file!"判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:12:36