我想批量处理文件夹中的 wav 文件:
- 首先将文件修剪为 5 秒,并将修剪后的文件放在名为“Trim5s”的文件夹中,然后
- 更改修剪文件(位于“Trim5s”文件夹中)的比特率,并将上述步骤 1 中修剪文件得出的新比特率文件保存到名为“16bit”的文件夹中,然后
- 将新修剪的 + 新比特率文件标准化为 -1,位于上述步骤 2 中得到的“16bit”文件夹中,并将标准化 + 修剪的文件 + 新比特率文件保存到文件夹“Norm-1”中。
这是我的文件夹结构:
MainFolder
|____file1.wav
|____file2.wav
|____Trim5s
|____file1_trim5s.wav
|____file2_trim5s.wav
|____16bit
|____file1_trim5s_16bit.wav
|____file2_trim5s_16bit.wav
|____Norm-1
|____file1_trim5s_16bit_Norm-1.wav
|____file2_trim5s_16bit_Norm-1.wav
目前我每次都手动执行每个步骤。以下是 Windowscmd
命令:
步骤 1:将文件修剪至秒:
for %i in (*.wav) do sox -S "%i" "Trim5s\%~ni_trim5.wav" trim 0 5
然后我手动将目录更改为“Trim5s”并运行第二步:
第 2 步:在“Trim5s”文件夹中将位深度更改为 16 位:
for %i in (*.wav) do sox -S "%i" -b 16 "16bit\%~ni_16bit.wav"
然后我再次手动将目录更改为文件夹“16bit”并运行第三步:
步骤 3:规范化16bit文件夹中的文件:
for %i in (*.wav) do sox -S --norm=-1 "%i" "Norm-1\%~ni_norm-1.wav"
有没有办法自动执行此过程,让我可以自动完成所有 3 个过程?也就是说,将上面给出的三个手动步骤转换为嵌套循环?嵌套循环可以完成吗?或者有没有更好的方法可以从 MainFolder 自动执行上面提到的 3 个任务?
这是我迄今为止尝试过的:
for %i in (*.wav) do sox -S "%i" "Trim5s\%~ni_trim-pt75.wav" trim 0 0.75 &
cd Trim5s for %i in (*.wav) do sox -S "%i" -b 16 "16bit\%~ni_16bit.wav" &
cd Norm-1 for %i in (*.wav) do sox -S --norm=-1 "%i" "Norm-1\%~ni_norm-1.wav"
任何帮助将不胜感激!
答案1
@echo off && cd /d "%~dp0"
2>nul mkdir "%~dp0Trim5s\16bit" "%~dp0Trim5s\Norm-1"
set "_sox=C:\Program Files (x86)\sox-14-4-2\sox.exe"
for %%i in ("%~dp0*.wav")do "%_sox%" -S "%%~fi" "%~dp0Trim5s\%%~ni_trim-pt75.wav" trim 0 0.75
for %%i in ("%~dp0Trim5s\*.wav")do "%_sox%" -S "%%~fi" -b 16 "%~dp0Trim5s\16bit\%%~ni_16bit.wav"
for %%i in ("%~dp0Trim5s\16bit\*.wav")do "%_sox%" -S --norm=-1 "%%~fi" "%~dp0Trim5s\Norm-1\%%~ni_norm-1.wav"
您不需要cd folder
并且&
:
for %i in (*.wav) do sox -S "%i" "Trim5s\%~ni_trim-pt75.wav" trim 0 0.75 &
cd Trim5s for %i in (*.wav) do sox -S "%i" -b 16 "16bit\%~ni_16bit.wav" &
cd Norm-1 for %i in (*.wav) do sox -S --norm=-1 "%i" "Norm-1\%~ni_norm-1.wav"
使用"%~dp0"
和"%~dp0+Path"
"%~dp0*.wav"
"%~dp0Trim5s\*.wav"
"%~dp0Trim5s\16bit\*.wav"
- 观察:假设您的浴室在
MainFolder
文件夹中,如果没有,请替换:
rem :: %~dp0
rem :: C:\Full\Path\To\MainFolder\
@echo off && cd /d "C:\Full\Path\To\MainFolder\" 2>nul mkdir "%cd%\Trim5s\16bit" "%cd%\Trim5s\Norm-1" set "_sox=C:\Program Files (x86)\sox-14-4-2\sox.exe" for %%i in ("%cd%\*.wav")do "%_sox%" -S "%%~fi" "%~dp0Trim5s\%%~ni_trim-pt75.wav" trim 0 0.75 for %%i in ("%cd%\Trim5s\*.wav")do "%_sox%" -S "%%~fi" -b 16 "%~dp0Trim5s\16bit\%%~ni_16bit.wav" for %%i in ("%cd%\Trim5s\16bit\*.wav")do "%_sox%" -S --norm=-1 "%%~fi" "%~dp0Trim5s\Norm-1\%%~ni_norm-1.wav"