You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell获取文件「详细信息」选项卡中的媒体类扩展属性?

解决PowerShell无法获取MP3媒体元数据的问题

哥们,我太懂你这困扰了——Get-ItemProperty和Get-ChildItem只能捞到文件系统层面的属性(比如创建时间、文件大小),根本碰不到MP3文件里藏的那些媒体元数据(比特率、流派、专辑这些都属于文件内容里的ID3标签,不是NTFS文件系统属性),所以你用那些命令肯定拿不到想要的信息。下面给你两种靠谱的解决办法:

方法一:用Windows Shell COM对象(无需额外安装)

Windows自带的Shell组件可以访问资源管理器里显示的所有文件详细属性,适合临时使用:

$filePath = "C:\你的MP3文件路径\example.mp3"

# 初始化Shell对象
$shell = New-Object -ComObject Shell.Application
$folder = $shell.Namespace((Split-Path $filePath))
$fileItem = $folder.ParseName((Split-Path $filePath -Leaf))

# 先枚举所有可用属性的索引和名称(方便你找到对应属性的编号)
for ($i = 0; $i -lt 288; $i++) {
    $propName = $folder.GetDetailsOf($folder.Items, $i)
    if ($propName) {
        Write-Output "[$i] $propName"
    }
}

# 根据上面找到的索引获取你需要的属性值(示例)
$album = $folder.GetDetailsOf($fileItem, 14)       # 专辑
$genre = $folder.GetDetailsOf($fileItem, 16)       # 流派
$bitRate = $folder.GetDetailsOf($fileItem, 168)    # 比特率

Write-Output "`n=== MP3属性 ==="
Write-Output "专辑: $album"
Write-Output "流派: $genre"
Write-Output "比特率: $bitRate"

注意:属性索引可能因Windows版本(Win10/Win11)略有差异,所以先执行枚举代码找到对应属性的准确编号是稳妥的做法。

方法二:用TagLibSharp库(专业媒体元数据处理)

如果需要经常处理媒体文件,推荐用TagLibSharp这个专门的库,属性名称直观,不用记索引:

# 先安装模块(首次运行)
Install-Module -Name TagLibSharp -Scope CurrentUser -Force

# 加载库并读取MP3属性
$filePath = "C:\你的MP3文件路径\example.mp3"
$mediaFile = [TagLib.File]::Create($filePath)

# 获取属性
$album = $mediaFile.Tag.Album
$genre = $mediaFile.Tag.Genres -join ", "  # 处理多流派情况
$bitRate = $mediaFile.Properties.AudioBitrate
$duration = $mediaFile.Properties.Duration.ToString("mm\:ss")

Write-Output "`n=== MP3详细属性 ==="
Write-Output "专辑: $album"
Write-Output "流派: $genre"
Write-Output "比特率: $bitRate kbps"
Write-Output "时长: $duration"

# 释放资源
$mediaFile.Dispose()

这个方法不仅支持MP3,还能处理其他主流媒体格式(比如MP4、FLAC),属性更全面,稳定性也更好。

内容的提问来源于stack exchange,提问作者ShellOfPower

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:48:28