PowerShell 获取视频持续时间并递归列出所有文件,导出为 csv

标签 powershell csv video 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('"','')}

我完全不熟悉 PowerShell 脚本,所以我不知道如何获取视频文件元数据。

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

我还找到了this answer ,但我需要所有子文件夹中所有文件的列表,并导出到 csv。

最佳答案

这段代码应该有帮助

$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

关于PowerShell 获取视频持续时间并递归列出所有文件,导出为 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58830853/

相关文章:

linux - 使用powershell区分linux和windows机器

java - 如何使用 opencsv 在 csv 中添加动态列和值

python - 用于附加带有新结果的文件的脚本 - 序列预期错误

PowerShell boolean 值——如何以不同的方式处理 null 和 false?

powershell - 导出 Active Directory 中用户的所有属性和值

ruby-on-rails - 视频不在 Rails 中播放

javascript - 如何从 HTML5 视频播放器帧访问原始像素数据?

linux - 如何在 Linux 中创建深度非压缩视频

powershell - kubectl exec 命令在 powershell ISE 中不起作用(在 powershell 中起作用)- 是否有理由或解决方法使其起作用?

csv - CSV 文件中的值列表应该使用哪个分隔符?