2017-07-25 83 views
4

所以从一个PC /硬盘驱动器得到复制到之间的年份的未来,我的音乐收藏是一个有点乱,所以我希望以编程方式通过每一个更新文件元数据在下面的截图(右单击>上的文件属性):访问音乐文件元数据

enter image description here

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

所以我可能需要两件事情:

一)的方式,为WMA访问和更新的MP3类型的文件 B)的方式来访问文件属性(在Windows级保护的ID3信息)和WAV;如果此方法也适用于MP3的工作,会是非常美妙的

任何人有什么想法?我知道这在C#中是可以实现的,但现在已经习惯了脚本编写,现在有点过分了。如果需要在适当的编译程序中完成,那么可以,但希望有一种方法可以在shell中完成。

回答

1

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() 
} 

希望它能帮助。

+0

是的,这看起来就像是我需要的,谢谢。我打算使用Get-Item生成所有文件的CSV转储,以这种方式批量编辑它们的属性,然后使用类似上述的方法进行批量更新。 –

+0

@ThomasGass:接受答案是可观的。 –