【发布时间】:2018-11-21 18:32:26
【问题描述】:
我最近一直在归档我的音乐库。我已经完成了我的批处理脚本如下:
@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"
)
)
【问题讨论】:
-
什么是
%aa? 请注意,您的元变量是%%a,并且任何%字符都应在批处理文件中加倍。我还注意到您已经转义了=字符,但没有转义您的,字符,我建议您也转义这些字符!我也假设您的ffprobe可执行文件是批处理文件的本地或其在%PATH%中列出的位置,但您只是Setting 变量,而不是Echoing它到文本文件。 -
您的问题是什么,您的预期输出是什么?
标签: batch-file ffprobe