Я конвертирую пару тысяч файлов .wem в формат .wav. Поскольку .wem — малоизвестный формат файлов, я решил конвертировать файлы с помощью SoX.
Стандартная установка SoX включает пакетный файл для использования с массовым преобразованием необработанных файлов, который я с удовольствием использовал. Я изменил пример, чтобы исключить необходимость перетаскивания файлов в пакетный файл с помощью вложенных циклов.
cd %~dp0
mkdir converted
for %%f in (*.wem) do FOR %%A IN (%*) DO sox -t raw -e signed-integer -b 16 -c 1 -r 44100 %%A "converted/%%~nA.wav"
pause
Он прекрасно создает каталог /converted, а затем продолжает выводить команду, каталог, а затем переходит (предположительно) к следующему файлу. К сожалению, открытие каталога /converted показывает, что вообще ничего не было сгенерировано, и преобразование заняло гораздо меньше времени, чем должно было. Я тестировал его с файлами .wem ранее, и он отлично конвертируется, поэтому я не думаю, что это имеет какое-либо отношение к формату. Скорее всего, это как-то связано с моим любительским программированием пакетных файлов. Есть идеи?
FOR %%A IN (%%f) DO..
но я не понимаю, зачем вам нужны два цикла for, когда это можно сделать в одном цикле. - person Gerhard   schedule 30.12.2018cd "%~dp0"
, чтобы работать также с путем к пакетному файлу, содержащим&
. Цикл FOR должен бытьfor %%I in (*.wem) do sox.exe -t raw -e signed-integer -b 16 -c 1 -r 44100 "%%I" "converted\%%~nI.wav"
, еслиsox
— это файл с расширением.exe
. В противном случае, еслиsox
имеет расширение файла.bat
или.cmd
, заменитеsox.exe
наcall sox.bat
соответственноcall sox.cmd
. - person Mofi   schedule 30.12.2018