У меня есть набор mp3-файлов в подкаталоге (mayor
), и я хочу конвертировать каждый из них, используя ffmpeg (например, так: ffmpeg -i <input_file> -ar 44100 -ab 128k -f mp3 <output_file>
), с результатом файл, сохраненный в папке mayor_out
в последовательном порядке.
Я пытался ответить на некоторые вопросы из стека FOR
, но никто не объяснил, как это сделать в итерации файла / каталога, поэтому я задаю новый вопрос.
2 ответа
0
Следующий Powershell должен выполнять команды, которые вам требуются, корректировать пути по мере необходимости:
Создайте файл в "родительском" каталоге (например, C:\parent\) с именем «ProcessMp3.ps1» и добавьте в него приведенный ниже код.
ForEach($i in Get-ChildItem -filter "*.mp3" -Path "C:\parent" ){ ffmpeg -i $i -ar 44100 -ab 128k -f mp3 ".\sibling\$i" }
Создайте каталог с именем "sibling" в родительском каталоге, например «C:\parent\sibling\».
В командной строке запустите:
Powershell ./ProcessMp3.ps1
Если последовательность означает просто добавление 1,2,3 и т.д. В качестве префикса к имени файла, сценарий может выглядеть следующим образом:
$c=1
ForEach($i in Get-ChildItem -filter "*.mp3" -Path "C:\parent" ){
ffmpeg -i $i -ar 44100 -ab 128k -f mp3 ".\sib\$c-$i"
$c++
}
0
Ну, мне удалось сделать это с помощью этого сценария .bat (вдохновленный этим ответом)
@echo off
cd /D mayor
set _num=1
FOR /R %%X IN (*.mp3) DO call :body %%X
goto :eof
:body
ffmpeg -i %1 -ar 44100 -ab 128k -f mp3 ../mayor_out/YAL_m%_num%.mp3
set /a "_num=_num+1"
goto :eof
pause