ejecutar correctamente la cadena por lotes de comandos SoX paso a paso - problemas

ejecutar correctamente la cadena por lotes de comandos SoX paso a paso - problemas

Para todos los archivos .wav en la carpeta sox-14-4-2, necesito eliminar el silencio al inicio, copiar el resultado en una subcarpeta existente.Producción, luego invierta el archivo, elimine el silencio nuevamente y finalmente invierta nuevamente.

La primera tarea de eliminación del silencio no presenta problemas:

FOR %%A IN (*.wav) do (
 sox %%A "Output\%%~nxa" silence 1 0.1 1%
 )

De alguna manera no puedo imaginar cómo ejecutar 3 comandos sox más uno por uno para cada archivo .wav enProduccióncarpeta después de esto?

FOR %%A IN ("Output\sample1.wav") DO (
sox %%A "Output\%%~nxa.wav" reverse
)

Aquí para el segundo comando sox.contrarrestar, un problema general es que no sé cómo aplicar esto a todos los archivos .wav en elProducción¿carpeta?
FOR %%A ("Output\*.wav")Está Mal

El segundo problema específico de SoX aquí es que no puedo usar el mismo nombre; no puedo usar%%~nxa, en su lugar necesito crear un nuevo archivo con un nuevo nombre o la salida se dividirá conEOF prematuro en el archivo de salida .wavenProduccióncarpeta y se convertirá en 80 bytes.

¿Cómo soluciono esto y aplico 4 comandos SoX en orden en todos los archivos .wav?
Los archivos .wav terminados deben ubicarse en una subcarpetaProducciónUna vez realizadas todas las tareas con el nombre del archivo de entrada original, mantenga también todos los archivos de entrada en la carpeta de arriba.

Respuesta1

Parece que SoX requiere un manejo especial cuando funciona con archivos sin comprimir.
Mientras se escribe la salida SoX, es necesario que el archivo de entrada sin comprimir siga abierto, por lo que forzar el reemplazo en este caso siempre causaráEOF prematuro en el archivo de salida .waverror.

for %%a in (*.wav) do copy /y *.wav *.
setlocal enabledelayedexpansion
for %%a in (*.wav) do (
  if not exist "%%~dpaTemporalOutput\" md "%%~dpaTemporalOutput\"
  if not exist "%%~dpaOutput\" md "%%~dpaOutput\"
  "sox.exe" "%%~dpa%%~xna" "%%~dpaTemporalOutput\%%~xna" OUR 2 SOX COMMANDS HERE
  "sox.exe" "TemporalOutput\%%~xna" "%%~xna" SAME 2 SOX COMMANDS HERE )
del /f /q "TemporalOutput\*.wav"
rmdir /s /q "TemporalOutput"
move "*.wav" "Output\"
ren *. *.wav
exit /b

información relacionada