尝试使用SOX修剪和淡化远程文件夹中的多个wav文件

时间:2016-04-10 00:31:01

标签: batch-file audio sox windows-console

我正在尝试创建一个文件,以便当我将选择的wav文件拖放到批处理脚本上时,它就是一个。将wavs复制到子目录(/ webclips),用下划线替换空格,然后尝试将所有新的wav文件从开头剪切到45秒。最终我会淡出它们...... 现在脚本正在复制,但在运行trim命令时会出现一些错误: sox WARN wav:.wav输入文件上的过早EOF sox WARN trim:未达到最后2个位置(音频短于预期)。

新的wavs文件(错误地)大小为1Kb。任何帮助,将不胜感激。

这是我的剧本

set FOLDERPATH=%~dp0
set FILEPATH=%~dp1
mkdir "%FILEPATH%webclips"
FOR %%A IN (%*) DO (copy %%A "%FILEPATH%webclips")
cd  "%FILEPATH%webclips"
for %%j in (*.*) do (
set filename=%%~nj
set filename=!filename:.=_!
set filename=!filename: =_!
if not "!filename!"=="%%~nj" ren "%%j" "!filename!%%~xj"
)
c:
cd/
CD "Program Files (x86)\sox-14-4-2"
for %%A in ("%FILEPATH%webclips\*.wav") do sox "%%A" "%FILEPATH%webclips\%%~nxA" trim 0 45
pause

1 个答案:

答案 0 :(得分:0)

在最后一行中,sox覆盖了搜索到的.wav文件。对于sox,它不能那样做。

因此可以删除将原始.wav文件复制到子文件夹的操作。

!variable!是延迟格式,必须在它之前声明setlocal enabledelayedexpansion

批处理文件也可以简化如下,

@echo off
setlocal enabledelayedexpansion
for %%a in (%*) do (
  if not exist "%%~dpawebclips\" md "%%~dpawebclips\"
  set file_name=%%~na
  set file_name=!file_name: =_!
  set file_name=!file_name:.=_!
  ren %%a !file_name!%%~xa
  "%ProgramFiles(x86)%\sox-14-4-2\sox.exe" "%%~dpa!file_name!%%~xa" "%%~dpawebclips\!file_name!%%~xa" trim 0 45
)
pause
exit /b