在脚本中从 mp3 文件中获取歌曲时长?

在脚本中从 mp3 文件中获取歌曲时长?

我正在尝试使用 Powershell 列出我的一些 mp3 文件。

我努力了

ls C:\test | Format-List -Property Name,Length

这让我

Name   : testfile.mp3
Length : 10058533

长度是文件的大小,目前我不关心这个。

我知道我可以在文件资源管理器中选择列标题的持续时间,所以我想将上面的内容重写为

ls C:\test | Format-List -Property Name,Duration

但我得到的是

Name   : testfile.mp3

我如何告诉 Powershell 返回持续时间的分钟和秒数?或者甚至只是秒数。提前致谢

答案1

要获取 mp3 的长度,可能最简单的方法就是利用资源管理器使用的 Shell 对象。

恐怕我没有为您提供单行脚本,但您始终可以编写一个可供调用的脚本。

$path = 'M:\Musikk\awesome_song.mp3'
$shell = New-Object -COMObject Shell.Application
$folder = Split-Path $path
$file = Split-Path $path -Leaf
$shellfolder = $shell.Namespace($folder)
$shellfile = $shellfolder.ParseName($file)

write-host $shellfolder.GetDetailsOf($shellfile, 27); 

更多信息可以在这里找到: http://powershell.com/cs/blogs/tobias/archive/2011/01/07/organizing-videos-and-music.aspx

编辑:此方法是必要的,因为长度信息与文件的其他元数据一起存在。

相关内容