Пакетный скрипт с использованием ffprobe - PullRequest
0 голосов
/ 12 июня 2018

В последнее время я занимаюсь архивированием своей музыкальной библиотеки.Я доработал свой пакетный скрипт следующим образом:

@echo off
for /r %%a in (*.mp3) do (
    if exist "%%~dpna.txt" (
        Echo "%%~dpna.txt" already present, skip
    ) else (
       for /f "tokens=1,*delims=-" %%b in ("%%~na") do (
           echo Artist: %%b
           echo Song  :%%c asdad
       )>"%%~dpna.txt"
    )
)

До сих пор довольно хорошо.Помогли и на форуме.>> Разбор имени файла с помощью пакетной автоматизации

С помощью этого сценария я смог выполнить вывод, проанализировав и используя имя файла.Но проблема, с которой я сталкиваюсь сейчас, заключается в том, что не все мои файлы имеют разный формат.Так что дальнейшие исследования для моей цели.Я решил выполнить свою задачу, извлекая метаданные с помощью ffprobe.Код кажется нормальным, но я не могу повторить результат, и он показывает эхо.Любая помощь будет высоко ценится.

Текущий код выглядит следующим образом.

@echo off
for /r %%a in (*.mp3) do (
    if exist "%%~dpna.txt" (
        Echo "%%~dpna.txt" already present, skip
    ) else (
       for /F "delims=" %%I in ('ffprobe -v error -show_entries format_tags^=title,artist,comment -of default^=noprint_wrappers^=1:nokey^=1 %aa') do set "title=%%I"
       )>"%%~dpna.txt"
    )
)

1 Ответ

0 голосов
/ 12 июня 2018

Я не вижу причин для вашего вложенного цикла For, вы должны иметь возможность запускать ffprobe напрямую, потому что вы не анализируете его вывод, а просто перенаправляете его в файл.

Пожалуйста, попробуйтеэтот вариант:

@Echo Off
For /R %%A In (*.mp3) Do If Not Exist "%%~dpnA.txt" (
        ffprobe -v error -show_entries format_tags=artist,comment,title -of default=nw=1:nk=1 "%%A"
    )>"%%~dpnA.txt"
...