这个批处理脚本从%folder%
using创建一个文件列表%wildcards%
,然后在驱动器上创建一个镜像目录,其中包含c:
每个文件的 txt 版本every file.mkv.txt
,其中包含原始文件的数据,如path-to-file/duration/size
.
setLocal enableDelayedExpansion
:: adder fails with filenames with ampersand "&". investigate
for /f "delims=" %%v in ('dir "%folder%\%wildcards%" /b /s /a-d 2^>nul') do (
if not exist "c:%%~pv" mkdir "c:%%~pv"
if not exist "c:%%~pnxv.txt" for /f "usebackq tokens=2 delims=," %%i in ('"%ffprobe%" -v quiet -show_entries "format=duration" -of csv "%%v"') do (
rem record path-to-file/duration/size into mirror files
echo %%v/%%i/%%~zv>"c:%%~pnxv.txt"
)
)
在某些文件上成功而在其他文件上失败,我认为它与执行到文件,
的部分中的逗号有关。看起来我需要使用逗号作为分隔符,因为持续时间的格式类似于. 自从我开始需要变量的引号(ffprobe.exe 的路径在哪里)以来,这停止了工作。ffprobe
%%v
format,94.436000
%ffprobe%