LoginSignup
0
1

More than 5 years have passed since last update.

wavファイルの曲名をpowershellで変更する

Last updated at Posted at 2018-04-30

環境

windows10 ver 1709
powershell ver 5.1

 内容

以下では、
1. パッケージマネージャ(NuGet)のインストール
2. Nugetを利用しパッケージ(taglib)をインストール
3. taglibに含まれるライブラリ(taglib-sharp.dll)をロード
4. taglib-sharp.dllを利用し、wavファイルの曲名を変更
を行います。

(以下、一部記憶を頼りに記載したため、誤っている可能性があります。)

事前準備(インストールなど)

管理者権限でpowershellを開く

NuGetの追加


PS C:\WINDOWS\system32> Install-Package nuget

The package(s) come(s) from a package source that is not marked as trusted.
Are you sure you want to install software from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y

Name                           Version          Source           Summary
----                           -------          ------           -------
NuGet                          1.3.3            PSGallery        Create Nuget repos, Register Repos, Manage Modules ...

パッケージの取得元を追加

PS C:\WINDOWS\system32> Register-PackageSource -Name "NugetSource" -Location "https://www.nuget.org/api/v2" -ProviderName nuget

Name                             ProviderName     IsTrusted  Location
----                             ------------     ---------  --------
NugetSource                      NuGet            False      https://www.nuget.org/api/v2

パッケージの取得元が追加されていることを確認

PS C:\WINDOWS\system32> Get-PackageSource

Name                             ProviderName     IsTrusted  Location
----                             ------------     ---------  --------
NugetSource                      NuGet            False      https://www.nuget.org/api/v2
PSGallery                        PowerShellGet    False      https://www.powershellgallery.com/api/v2

taglibのインストール


PS C:\WINDOWS\system32> Install-Package taglib

taglibがインストールされていることを確認


PS C:\WINDOWS\system32> Get-Package -Name taglib


Name                           Version          Source                           ProviderName
----                           -------          ------                           ------------
taglib                         2.1.0.0          C:\Program Files\PackageManag... NuGet

事前準備(ライブラリのロードなど)

パッケージのパスから、ライブラリファイル(taglib-sharp.dll)の絶対パスを$taglibPathに格納。また、同時にライブラリファイルの存在を確認。

PS C:\WINDOWS\system32> Get-Package -Name taglib | % { split-path $_.source -parent | join-path -childpath "\lib\taglib-sharp.dll" | Tee-Object -Variable taglibPath| test-path}
True

taglib-sharp.dllをロード

PS C:\WINDOWS\system32> [Reflection.Assembly]::LoadFrom($taglibpath)

GAC    Version        Location
---    -------        --------
False  v2.0.50727     C:\Program Files\PackageManagement\NuGet\Packages\taglib.2.1.0.0\lib\taglib-sharp.dll

タイトルの変更

wavファイルを格納したフォルダに移動

ファイル名から先頭3文字を削除した文字列を、曲名(Title)に設定する。

以下のようにファイル名から曲名を取得。
ファイル名 "NN Title.wav"

曲名 "Title"

PS G:\_tmp\renameTitle> Get-ChildItem -Filter *.wav |
>> ForEach-Object {
>>   $wavFile=[TagLib.File]::Create($_.FullName);
>>   $wavFile.Tag.Title=$_.name.Substring(3,$_.name.Length - 7);
>>   $wavFile.Save();
>> }

 疑問

インストールしたパッケージに含まれるライブラリのロードは、
もっとよい方法がありそうな気がするが。。。?

参考にしたURL

github powershell-taglib
Stack Overflow Access Music File Metadata in Powershell [closed]
【Powershell】Powershellでの左からxx文字目、右からxx文字目の文字列を取得する
Join-Paht
Tee-Object

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1