SoX-Befehlskette Schritt für Schritt korrekt im Batch ausführen - Probleme

SoX-Befehlskette Schritt für Schritt korrekt im Batch ausführen - Probleme

Für alle WAV-Dateien im Ordner sox-14-4-2 muss ich die Stille am Anfang entfernen und das Ergebnis in einen vorhandenen Unterordner kopieren.Ausgabe, dann die Datei umkehren, die Stille wieder entfernen und schließlich wieder umkehren.

Die erste Aufgabe zum Entfernen der Stille ist unproblematisch:

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

Irgendwie kann ich mir nicht vorstellen, wie ich 3 weitere Sox-Befehle nacheinander für jede WAV-Datei ausführen soll inAusgabeOrdner danach?

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

Hier der zweite Sox-Befehlumkehren, ein allgemeines Problem ist, dass ich nicht weiß, wie ich dies auf alle WAV-Dateien imAusgabeOrdner?
FOR %%A ("Output\*.wav")ist falsch

Das zweite SoX-spezifische Problem hier ist, dass ich nicht denselben Namen verwenden kann - ich kann nicht verwenden%%~nxa, stattdessen muss ich eine neue Datei mit einem neuen Namen erstellen, sonst wird die Ausgabe unterbrochen mitVorzeitiges EOF bei der WAV-AusgabedateiInAusgabeOrdner und es wird 80 Byte groß.

Wie löse ich das und wende 4 SoX-Befehle der Reihe nach auf alle WAV-Dateien an?
Die fertigen WAV-Dateien sollten sich in einem Unterordner befindenAusgabeNachdem alle Aufgaben mit dem ursprünglichen Eingabedateinamen erledigt sind, behalten Sie auch alle Eingabedateien im obigen Ordner.

Antwort1

Es scheint, dass SoX eine spezielle Behandlung erfordert, wenn es mit unkomprimierten Dateien arbeitet.
Beim Schreiben der Ausgabe benötigt SoX die unkomprimierte Eingabedatei noch geöffnet, daher führt das Erzwingen des Ersetzens in diesem Fall immer zuVorzeitiges EOF bei der WAV-AusgabedateiFehler.

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

verwandte Informationen