我正在尝试创建一个文件,以便当我将选择的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
答案 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