使用sox批量修剪wav文件

时间:2016-11-25 17:23:35

标签: batch-file

我正在尝试使用sox批量修剪音频文件(wav),首先修剪15秒

当我在一个文件上运行以下内容时,它可以通过创建一个文件' snipped.wav'减去前15秒,在同一个文件夹中

@echo off
cd E:\trim\singlefile
sox original.wav snipped.wav trim 15

但是,当我在多个文件上尝试以下操作(修剪后的已处理文件应移至' trimmed'文件夹)时,它不起作用:

@echo off
cd E:\trim\multiplefiles
mkdir trimmed
FOR %%A IN (%*) DO sox "%%A" "trimmed/%%~nA" trim 15

我想我某处(非常)错了。请建议。

1 个答案:

答案 0 :(得分:0)

你正在以错误的方式使用for循环。您必须提供要在括号之间迭代的文件。 %*实际上意味着“所有论据”。您需要*.wav(表示当前文件夹中以“.wav”结尾的所有文件)或*(表示当前文件夹中的所有文件)。 您也可以在双引号内使用%%~A。它将删除周围的双引号(如果它们已经出现在%%A中,否则你可能有双引号双引号(例如""this should be one string"")并且双引号的效果将被撤消。您确定"trimmed\%%~nA"部分吗?使用~n,您将省略文件名的扩展名(如果%%Aoriginal.wav,则%%~nA将成为original)。如果您想要文件名和扩展名,请使用~nx(请参阅末尾的链接) 这是你应该拥有的循环:

FOR %%A IN (*.wav) DO sox "%%~A" "trimmed\%%~nA" trim 15

如果您确实想要在"trimmed\%%~nA"部分中添加扩展程序,请将其替换为"trimmed\%%~nxA"

This link讨论批处理中的不同for循环 This link讨论了可以在参数和循环变量上使用的不同路径操作技术