FFmpeg в партии для цикла для MP3 Продолжительность

У меня есть список MP3. Я хотел бы видеть, на экране, а также в файле, по одному MP3 в строке, с указанием его продолжительности. Вот пакетный файл, который я использую:

@echo off cls if exist MP3Duration.txt del MP3Duration.txt for %%i in (*.mp3) do ( echo %%i echo %%i >> MP3Duration.txt ffmpeg -i "%%i" | find "Duration" >> MP3Duration.txt ) 

У этого есть несколько проблем: выходной файл содержит имена файлов, но не длительность, а экранный экран содержит много текста ffmpeg, а для каждого файла – ошибку: «Должен быть указан хотя бы один выходной файл».

  • Пакетная программа не работает так, как должна!
  • Как вы перечисляете все процессы в командной строке в Windows?
  • Как создать пустой файл из командной строки в Windows
  • Как рекурсивно удалить каталог из командной строки в Windows?
  • Удалить главный раздел (C 🙂 и сделать другой Parition (D 🙂 main
  • Как выполнить командную строку Windows в фоновом режиме?
  • Как запустить виртуальную виртуальную машину VM из командной строки?
  • Su Командная строка
  • Как я могу установить кодовую страницу командной строки в Windows 7?
  • Повышенная подсказка командной строки не может получить доступ к общим дискам
  • Можете ли вы заархивировать файл из командной строки, используя только встроенную возможность Windows для zip-файлов?
  • Как настроить все окна консоли
  • 2 Solutions collect form web for “FFmpeg в партии для цикла для MP3 Продолжительность”

    Выход консоли ffmpeg предназначен только для информационных целей и не должен анализироваться сценариями. ffprobe этого используйте ffprobe :

     ffprobe -loglevel error -select_streams a -show_entries stream=duration -sexagesimal -of default=noprint_wrappers=1:nokey=1 "%%i" | TEE.BAT -a MP3Duration.txt 

    Также см. Документацию FFprobe и FFmpeg Wiki: советы FFprobe .

     rem this assumes ffmpeg is in c:\ffmpeg if exist filelist.txt ( del /F filelist.txt ) if exist list.txt ( del /F list.txt ) copy nul list.txt >nul rem change exts as needed for your audio files if exist *.mkv ( dir/b *.mkv >>list.txt ) if exist *.fl? ( dir/b *.fl? >>list.txt ) if exist *.avi ( dir/b *.avi >>list.txt ) if exist *.mp4 ( dir/b *.mp4 >>list.txt ) if exist *.mov ( dir/b *.mov >>list.txt ) if exist *.swf ( dir/b *.swf >>list.txt ) sort <list.txt >filelist.txt for /F "delims=;" %%F in ( filelist.txt ) do ( for %%F in (^"%%F^") do ( for /f "tokens=2-5 delims=:., " %%a in ( 'c:\ffmpeg\ffmpeg -i "%%F" 2^>^&1 ^| find "Duration:"' ) do ( set /a full=%%a * 60 * 60 + %%b * 60 + %%c ) ) echo Length of %%F is %%a:%%b:%%c or !full! Seconds ) 
    Давайте будем гением компьютера.