有馬総一郎のブログ

(彼氏の事情)

Powershellで最近追加した曲のプレイリストを作成する

NW-ZX100は最近、追加した音楽ファイルは期間でなく、三世代でしか管理できない。ちょっとそれだと不便なので、以下のような最近追加した曲のプレイリストを作成するバッチを作成した。

createRecentPlaylist.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    @powershell -NoProfile -ExecutionPolicy Unrestricted "$s=[scriptblock]::create((gc \"%~f0\"|?{$_.readcount -gt 1})-join\"`n\");&$s" %*&goto:eof
    $playlist = "J:\MUSIC\recent_playlist.m3u8"
    if (Test-Path $playlist) {
        Remove-Item $playlist
    }
    $directories = Get-ChildItem -Directory -Recurse J:\MUSIC | Where-Object {$_.LastWriteTime -ge (Get-Date).AddDays(-30)} | Sort-Object LastWriteTime -Descending
    foreach($dir in $directories) {
        $files = Get-ChildItem -File $dir.FullName | Where-Object {($_.Extension -ne "m3u8") -and ($_.Extension -ne "jpg")} | Sort-Object Name
        foreach($file in $files) {
        Write-Output $file.FullName.Replace("J:\MUSIC\", "") >> $playlist
        }
    }
    $playlist16 = Get-Content $playlist
    Write-Output $playlist16 | Out-File -Encoding UTF8 $playlist

一行目のおまじないで、二行目以降の処理は、powershellで実行される。powershellの実行確認が要らなくて済む。

フォルダは作成日時の降順で取得して、その配下のファイルは名前順でソートするようにした。

foobar2000使ってるなら、Library 検索(Ctl+q)を開いて%added% DURING LAST 4 WEEKSを入力、そこからCreate PlaylistなりCreate Autoplaylistを作成して、それをm3u8で保存すればいいだけの話なんだけど…しかも、これなら、ソートとかグルーピングもしやすい。

しかも、Autoplaylistなら、自動で更新されていく。まあ、それでも、別名保存と中身のパス編集してからのコピーと若干手間ではある。

上のバッチをRun Serviceで登録して、ショートカットキー登録すれば、プレイリスト作成から、Walkmanでの保存までがワンクリックだ。

Comments