使用 CMD:列出文件夹中的所有 Mp4 并列出它们的时长

使用 CMD:列出文件夹中的所有 Mp4 并列出它们的时长

我目前正在使用以下代码创建一个file.CSV包含所有 .mp4 标题列表的文件:

dir /s /b *.mp4 > listmp4.csv

我想在列表中包含每个视频的时长。
我的命令行应该是什么?

我也希望 CSV 中包含这些数字:

在此处输入图片描述

答案1

据我所知,如果不使用 WScript 脚本,CMD 就无法获取元数据属性,例如期间作曲家, 或者比特率。 然而,电源外壳确实提供了设施来收集这些信息。

以下脚本经过改编来自 StackOverflow, 跑进电源外壳,递归扫描文件夹并管道文件夹文件名期间转换为 CSV。

$Directory = "E:\Audio Files\_.mp3\Albeniz, Isaac"
$Shell = New-Object -ComObject Shell.Application
Get-ChildItem -Path $Directory -Recurse -Force | ForEach 
{
    $Folder = $Shell.Namespace($_.DirectoryName)
    $File = $Folder.ParseName($_.Name)
    $Duration = $Folder.GetDetailsOf($File, 27)
    [PSCustomObject]@{
        Folder = $_.DirectoryName
        Name = $_.Name
        Duration = $Duration}} | Export-Csv -Path "C:/temp/out.csv" -NoTypeInformation

它创建下面显示的 CSV。

LibreOffice Calc 中显示的 CSV

根据需要修改脚本以定位文件并显示或隐藏元数据。

答案2

使用ffprobe.exe (FFmpeg)在包含要列出的文件的文件夹内循环

@echo off 

cd /d "D:\Path\To\mp4\Videos\Folder\"
set "_ffprobe=C:\Program Files\FFmpeg\Bin\ffprobe.exe"
for /R %%I in (*.mp4)do @for /f eol^=^|delims^=. %%i  in ('
@"%_ffprobe%" -i "%%~fI" -show_entries format^=duration -v quiet ^
-of csv^="p=0" -sexagesimal^|findstr/e .[0-9]')do echo\"%%~nxI",'0%%~i>>".\file.csv"

相关内容