Just beat IT

情報系学生が技術的なことから昨日の夕飯のことまで

【PowerShell】音声ファイル(mp3など)の名前をタイトル属性と同名に一発変換!【コマンドレット】

はじめに

どうも!そろそろ学生生活を終えようとしているロピタルです( 一一)

今回は,Powershellのコマンドレットとして音声ファイルの名前をタイトル属性を基に変更するコマンドレットを作成しました.その中で詰まった部分があったので簡単に書きますね!!

コマンドのコードはここにあるので,ぜひ使ってください('ω')

github.com

目次

経緯

音楽をスマホなので聴く際に,プレイヤによってはファイル名で表示されたりタイトル属性で表示されたりしてややこしかったりしますよね??

また,ファイル操作するときなんかに,ファイル名が曲名と異なると,どれがどの曲のファイルか分からなくなったりして面倒なんです(-_-;)

そこで,音声ファイルの「タイトル属性」をそのままファイル名に変換したいと思いました.


が...

ファイル一つ一つやっていくのは面倒ということで,コマンドレットを作成することにしました!!!

f:id:lhopital:20201201070048j:plain

詰まった点

作成の際に詰まった点について書きます!

ファイル名の拡張子の取得

プログラムではまず,コマンドの実行ディレクトリ直下にある音声ファイル名をリストとして取得します.

$items = Get-ChildItem -Path ./ -Include *.mp3,*.flac,*.m4a -Name

これで,itemsという変数に,mp3,flac,m4aファイルの名前がリストとして格納されます.

その後,ファイル名を変更して保存するのですが,ファイル名の拡張子は元の拡張子と同じ必要がありますよね???

そこで,元ファイルの拡張子がmp3なのかflacなのかm4aなのか判断する必要があるのですが,それが難しい(-_-;)

Get-Childitemによって得られるデータには本来,拡張子を保存しているExtensionという変数が含まれるのですが,Nameオプションでファイル名で条件指定して得られたデータではExtensionが使えないんです( 一一)

拡張子を取得するためのコードを書こうかと思ったんですがめちゃくちゃ簡単な解決方法がありました(笑)

ファイルの再取得

ファイル名が分かっているので,Get-Childitemによりファイルを再取得し,Extension属性で拡張子を確認すればOKでした.Powershellをよく使う人にとっては当然の解決策なのかな?

まとめ

今回は,音声ファイルの名前をタイトル属性と同名に変換するコマンドレットを作成しました!!

たいしたことない記事ですみません(笑)もうちょっとコーディング頑張りますノシ