繁体   English   中英

在子文件夹中使用 sox 批处理 wav 文件

[英]Batch process wav files with sox within subfolders

我有一个批处理脚本文件,可以将现有的wav文件转换为 Mono wav 文件,然后创建一个名为“Mono”的文件夹

代码

@echo off && cd /d "%~dp0"

2>nul mkdir "Mono"
set "_sox=C:\Program Files (x86)\sox-14-4-2\sox.exe"

for %%i in ("*.wav") do "%_sox%" -S "%%~fi" "Mono\%%~ni.wav" channels 1

我必须将这个.bat文件放在我想要转换的文件夹中。 我的文件夹结构正在扩展,我必须 go 手动浏览每个文件夹,放置.bat文件并运行脚本以获取生成的 mono 文件。

这是我的文件夹结构的示例:

Main Folder
    |
    |______fold1
    |        |_____file1.wav
    |        |_____file2.wav
    |
    |______fold2
    |        |_____file1.wav
    |        |_____file2.wav
    |
    |______fold3
             |_____file1.wav
             |_____file2.wav

随着文件夹结构的扩展,我想将.bat文件放在主文件夹中,运行脚本,脚本将 go 通过每个子文件夹,在每个子文件夹中创建“Mono”文件夹并将转换后的 mono wav 文件放在那里. 这应该是具有转换后的 mono 文件的更新文件结构:

Main Folder
    |
    |______fold1
    |        |_____file1.wav
    |        |_____file2.wav
    |        |_____Mono
    |                |______file1.wav
    |                |______file2.wav
    |______fold2
    |        |_____file1.wav
    |        |_____file2.wav
    |        |_____Mono
    |                |______file1.wav
    |                |______file2.wav
    |______fold3
    |        |_____file1.wav
    |        |_____file2.wav
    |        |_____Mono
    |                |______file1.wav
    |                |______file2.wav

请让我知道如何修改.bat文件来完成此任务。 谢谢!

我会这样做:

@ECHO OFF
SET "_sox=C:\Program Files (x86)\sox-14-4-2\sox.exe"

FOR /F "usebackq delims=" %%A IN (`DIR /B "%~dp0"`) DO (
    MKDIR "%~dp0\%%A\Mono" 2> NUL
    FOR /F "usebackq delims=" %%B IN (`DIR /B "%~dp0\%%A\*.wav"`) DO (
        "%_sox%" -S "%~dp0\%%A\%%B" "%~dp0\%%A\Mono\%%~nB.wav" channels 1
    )
)

DIR /B列出指定文件夹中的每个文件和文件夹。

对于它找到的每个文件夹,它将在其中创建一个 Mono 文件夹,然后为找到的每个.wav文件运行 sox 命令。

希望这可以帮助。 顺便说一句,爱你的名字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM