Mit CMD: Alle MP4s im Ordner auflisten UND ihre Dauer auflisten

Mit CMD: Alle MP4s im Ordner auflisten UND ihre Dauer auflisten

Ich verwende derzeit den folgenden Code, um eine file.CSVDatei mit einer Liste aller MP4-Titel zu erstellen:

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

Ich möchte die Dauer jedes Videos in meine Liste aufnehmen.
Wie sollte meine Befehlszeile lauten?

Ich möchte diese Zahlen auch in der CSV:

Bildbeschreibung hier eingeben

Antwort1

Soweit ich weiß, gibt es für CMD keine Möglichkeit, ohne WScript-Skripting Metadatenattribute abzurufen, wieDauer,Komponisten, oderBitrate. Jedoch,Power Shellbietet die Möglichkeitum diese Informationen zu sammeln.

Das folgende, angepasste Skriptvon StackOverflow, einlaufenPower Shell, durchsucht den Ordner rekursiv und leitetOrdner,DateinameUndDauerin eine 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

Es erstellt die unten angezeigte CSV.

CSV-Anzeige in LibreOffice Calc

Ändern Sie das Skript nach Bedarf, um den Speicherort der Dateien festzulegen und die Metadaten anzuzeigen oder auszublenden.

Antwort2

Verwendenffprobe.exe (FFmpeg)in einer Schleife in Ihrem Ordner, in dem Sie die Dateien haben, die Sie auflisten möchten

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

verwandte Informationen