Usando CMD: enumere todos los Mp4 en la carpeta Y enumere sus duraciones

Usando CMD: enumere todos los Mp4 en la carpeta Y enumere sus duraciones

Actualmente estoy usando el siguiente código para crear un file.CSVarchivo con una lista de todos los títulos .mp4:

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

Quiero incluir la duración de cada video en mi lista.
¿Cuál debería ser mi línea de comando?

También quiero estos números en el CSV:

ingrese la descripción de la imagen aquí

Respuesta1

AFAIK, CMD no tiene forma, sin utilizar secuencias de comandos WScript, de recuperar atributos de metadatos comoDuración,Compositores, oTasa de bits. Sin embargo,Potencia Shellproporciona las instalacionespara recopilar esa información.

El siguiente guión, adaptadode StackOverflow, entrar corriendoPotencia Shell, escanea la carpeta de forma recursiva y canalizaCarpeta,Nombre del archivoyDuracióna un 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

Crea el CSV que se muestra a continuación.

CSV mostrado en LibreOffice Calc

Modifique la secuencia de comandos según sea necesario para la ubicación de los archivos y para mostrar u ocultar los metadatos.

Respuesta2

Usarffprobe.exe (FFmpeg)en un bucle dentro de su carpeta donde tiene los archivos que desea enumerar

@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"

información relacionada