在 Powershell 中访问音乐文件元数据

Access Music File Metadata in Powershell

所以在从一个 PC/hard 驱动器复制到下一个驱动器之间的这些年里,我的音乐 collection 有点乱,所以我想以编程方式检查每一个并更新以下屏幕截图中的文件元数据(通过右键单击 > 文件属性):

有些文件是 MP3,所以我知道可以在那里使用 ID3(我曾尝试使用 Get-Content 查看 ID3 标签所在的最后 128 个字节,但只有一些小位显示为可读文本,假设这是因为它是一个二进制文件并且需要 decoded/parsed 以某种特定方式)。大约相同数量的是 WMA(很旧的编解码器版本,可能是 7 或 8),还有一些是未压缩的 WAV。

所以我可能需要两件事:

a) 一种访问和更新 MP3 类型文件的 ID3 信息的方法 b) 一种访问 WMA 和 WAV 文件属性(在 Windows 级别)的方法;如果这种方法也适用于 MP3 那就太棒了

有人有什么想法吗?我知道这在 C# 中是可能的,但现在我有点头疼,因为我更习惯于编写脚本。如果它需要在一个适当的编译程序中完成,那就这样吧,但希望在 shell.

中有办法做到这一点

HERE 下载 tagsharp.dll

有一个单独的模块可用于修改任何元数据,例如:

get-childitem mylocal.mp3 | set-album "MyLocalAlbum"

或类似这样的东西:

$files = Get-ChildItem D:\Folder -include *.mp3 -recurse 
[System.Reflection.Assembly]::LoadFile("C:\TagLibDirectory\taglib-sharp.dll" ) 

foreach($iFile in $files) 
{ 
    $iFile.fullname    
    $mediaFile=[TagLib.File]::Create($iFile.fullname)    
    $mediaFile.Tag.Album = $iFile.Directory.Name 
    $mediaFile.Tag.AlbumArtists=$iFile.Directory.Name 
    $mediaFile.Save()   
}

希望对您有所帮助。