2017-07-25 108 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:接受答案是可觀的。 –