在子文件夹中使用 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
文件放在我想要转换的文件夹中。我的文件夹结构正在扩展,我必须手动浏览每个文件夹,放置 .bat
文件和 运行 脚本以获取生成的单声道文件。
这是我的文件夹结构的示例:
Main Folder
|
|______fold1
| |_____file1.wav
| |_____file2.wav
|
|______fold2
| |_____file1.wav
| |_____file2.wav
|
|______fold3
|_____file1.wav
|_____file2.wav
随着文件夹结构的扩展,我想将 .bat
文件放在主文件夹中,运行 脚本,脚本将遍历每个子文件夹,创建“Mono”文件夹在每个子文件夹中,并将转换后的单声道 wav 文件放在那里。这应该是包含转换后的单声道文件的更新文件结构:
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 命令。
希望这对您有所帮助。顺便说一句,喜欢你的名字
我有一个批处理脚本文件,可以将现有的 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
文件放在我想要转换的文件夹中。我的文件夹结构正在扩展,我必须手动浏览每个文件夹,放置 .bat
文件和 运行 脚本以获取生成的单声道文件。
这是我的文件夹结构的示例:
Main Folder
|
|______fold1
| |_____file1.wav
| |_____file2.wav
|
|______fold2
| |_____file1.wav
| |_____file2.wav
|
|______fold3
|_____file1.wav
|_____file2.wav
随着文件夹结构的扩展,我想将 .bat
文件放在主文件夹中,运行 脚本,脚本将遍历每个子文件夹,创建“Mono”文件夹在每个子文件夹中,并将转换后的单声道 wav 文件放在那里。这应该是包含转换后的单声道文件的更新文件结构:
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 命令。
希望这对您有所帮助。顺便说一句,喜欢你的名字