PowerShell 获取视频时长并递归列出所有文件,导出到csv

liq*_*she 0 csv video powershell duration

我想获得一个文件夹及其子文件夹中所有视频文件(MTS 或 MP4 格式)的 csv 列表。我需要包含路径、文件大小和视频时长的名称。

我使用这个 PowerShell 脚本成功地从主文件夹和子文件夹中获取了所有文件的列表。但是这个脚本没有获取我可以从中提取持续时间的视频文件元数据。

Get-ChildItem  D:\'My Source Folder' -Recurse | where {!$_.PSIsContainer} | select-object FullName, LastWriteTime, Length | export-csv -notypeinformation -path C:\results_file.csv | % {$_.Replace('"','')}
Run Code Online (Sandbox Code Playgroud)

我对 PowerShell 脚本完全陌生,所以我无法弄清楚如何获取视频文件元数据。

注意:我知道 select-object * 获取文件的所有属性,但不幸的是,它也没有特定于视频文件的持续时间。

我也找到了这个答案,但我需要所有子文件夹中所有文件的列表,导出到 csv。

sah*_*hus 5

这段代码应该有帮助

$Directory = "D:\My Source Folder"
$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]@{
        Name = $_.Name
        Size = "$([int]($_.length / 1mb)) MB"
        Duration = $Duration
    }
} | Export-Csv -Path "./temp.csv" -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)