У меня есть набор mp3-файлов в подкаталоге (mayor), и я хочу конвертировать каждый из них, используя ffmpeg (например, так: ffmpeg -i <input_file> -ar 44100 -ab 128k -f mp3 <output_file>), с результатом файл, сохраненный в папке mayor_out в последовательном порядке. Я пытался ответить на некоторые вопросы из стека FOR , но никто не объяснил, как это сделать в итерации файла / каталога, поэтому я задаю новый вопрос.

2 ответа2

0

Следующий Powershell должен выполнять команды, которые вам требуются, корректировать пути по мере необходимости:

  1. Создайте файл в "родительском" каталоге (например, 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"
    }
    
  2. Создайте каталог с именем "sibling" в родительском каталоге, например «C:\parent\sibling\».

  3. В командной строке запустите:

    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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .