BATCH | 将多个variables回显到文件

目录包含2(或更多)任何随机名称的video文件。

video1.mkv video2.mkv 

需要找出每个video的持续时间。 为此,我们使用MediaInfo 。

 setlocal EnableDelayedExpansion for %%a in (*.mkv) do ( for /f "usebackq" %%a in (`"mediainfo --Inform=Video;%%Duration%% %%a"`) do set duration=%%a echo "!duration!" > "data.txt" ) 

问题是,它只打印1个值/持续时间(我认为是最后一个文件)。 它的工作原理,只购买一个文件。

我如何使它与目录中的所有文件一起工作?

只需使用>>而不是> ,而不是重写

 setlocal EnableDelayedExpansion for %%a in (*.mkv) do ( for /f "usebackq" %%a in (`"mediainfo --Inform=Video;%%Duration%% %%a"`) do set duration=%%a echo "!duration!" >> "data.txt" ) 

如果mediainfo.exe位于路径中的某个位置,则不需要引用该名称,但是.mkv文件名最有可能包含空格,则会像这样更改引号:

 @Echo off&SetLocal EnableExtensions EnableDelayedExpansion ( For %%a in (*.mkv) do ( Set "Duration=" For /f "delims=" %%b in ( 'mediainfo --Inform^=Video^;%%Duration%% "%%a"' ) do set "Duration=%%b" echo !Duration!,"%%a" ) ) > "data.txt" 

持续时间并不知道它属于哪个文件,因此使用* .mpg文件运行的此示例具有附加的文件名。

 2595000,"R:\video\Der Traum ihres Lebens - Das Erste 2010-07-09 20-15-00.mpg" 5333160,"R:\video\Dirty Harry 3 - Der Unerbittliche - RTL2 2010-05-29 00-10-00.mpg" 5651960,"R:\video\Die Spur des Falken - Das Erste 2010-05-28 00-40-00.mpg"