Использование CMD: вывести список всех Mp4 в папке и их длительность

Использование CMD: вывести список всех Mp4 в папке и их длительность

В настоящее время я использую следующий код для создания file.CSVфайла со списком всех названий .mp4:

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

Я хочу включить длительность каждого видео в свой список.
Какой должна быть моя командная строка?

Мне также нужны эти цифры в CSV:

введите описание изображения здесь

решение1

Насколько мне известно, CMD не имеет возможности без использования скриптов WScript извлекать атрибуты метаданных, такие какПродолжительность,Композиторы, илиСкорость передачи данных. Однако,PowerShellпредоставляет ли возможностьдля сбора этой информации.

Следующий сценарий, адаптированныйиз StackOverflow, вбежатьPowerShell, рекурсивно сканирует папку и передаетПапка,Имя файлаиПродолжительностьв 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-файл, показанный ниже.

CSV отображается в LibreOffice Calc

При необходимости измените скрипт, указав местоположение файлов и отобразив или скрыв метаданные.

решение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"

Связанный контент