从脚本中的 mp3 文件获取歌曲持续时间?

Dar*_*ius 7 mp3 powershell

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

我试过了

ls C:\test | Format-List -Property Name,Length
Run Code Online (Sandbox Code Playgroud)

这给了我

Name   : testfile.mp3
Length : 10058533
Run Code Online (Sandbox Code Playgroud)

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

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

ls C:\test | Format-List -Property Name,Duration
Run Code Online (Sandbox Code Playgroud)

但我得到的是

Name   : testfile.mp3
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*tin 10

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

恐怕我没有给你的单行本,但你总是可以制作一个你调用的脚本。

$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); 
Run Code Online (Sandbox Code Playgroud)

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

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