批次| 将多个变量回显到文件

use*_*268 5 windows batch-file command-line-interface mediainfo windows-10

目录包含2个(或更多)具有任意随机名称的视频文件.

video1.mkv
video2.mkv
Run Code Online (Sandbox Code Playgroud)

需要找出每个视频的持续时间.为此,我们使用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"
)
Run Code Online (Sandbox Code Playgroud)

问题是,它只打印1个值/持续时间(我认为是最后一个文件).它有效,只购买一个文件.

如何使其与目录中的所有文件一起使用?

Dav*_*ira 3

只需使用>>而不是附加>,而不是覆盖

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"
)
Run Code Online (Sandbox Code Playgroud)