使用ffprobe

时间:2018-06-12 11:15:46

标签: batch-file ffprobe

我最近一直在做我的音乐库存档。我已经完成了我的批处理脚本,如下所示:

@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"
    )
)

到目前为止相当不错。在论坛中也有帮助。 >> Parse file name using batch automation

使用此脚本,我可以通过解析和使用文件名来完成输出。但我现在面临的问题是,并非所有文件的格式都不一样。所以进一步研究我的目标。我决定通过使用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 :(得分:0)

我认为你的嵌套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"