せっかく衝動買いした
GRANDISKだが、やっぱり圧倒的に使いにくいわけで、せめてプレイリストくらいは自動生成するようにしようと思ったわけだがこれが意外と難航。
まずcygwinがあるわけで、これを使って
cd \music & dir /s /a /b /a-d |sort |sed -e 's/.:\\\\MUSIC\\\\//g' | iconv -f SJIS -t UTF-16LE > \SYSTEM\PLAYLIST\list
にゃどとしようと思ったら、iconvがバカでバカでバカでバカでバカでバカでバカで。
というのも「〜」がおかしくにゃったりという、厳密に規格通り変換すると実際に使われてるものと違うのでおかしにゃことににゃりますよ系に対応した、新しいiconvが入ってにゃいわけで。iconv -f SJIS-win -t UTF-16LE で行けるらしいんだがそんにゃフォーマットは知らんとか言われて。
しゃーにゃいのでrubyですよruby。これがまたnkfだったりしてまたややこしい。nkfも高機能化しててそれは良いことにゃんだが、どうにもリファレンスが意味不明で。
> X,x Assume X0201 kana in MS-Kanji, -x preserves X0201
> --cp932inv convert Shift_JIS EDxx-EFxx to equivalnet CP932 FAxx-FCxx
> --ms-ucs-map Microsoft UCS Mapping Compatible
とかの意味を調べにゃいと使えんとかこう・・・
しかもオプションに順番があって-xは先に指定しにゃいとダメとかもう・・・このへんのやる気の無さというか信頼の置け無さが脱力系である。
で結局、alllist.plpは
cd \music && dir /s /a /b /a-d *.mp3 *.wav *.wma | sort | sed -e 's/^.:\\\\MUSIC\\\\//g' |ruby -rnkf -e 'while line = ARGF.gets ; print NKF.nkf("-Lw -w16L0 -x --cp932inv --ms-ucs-map", line) ; end' > \SYSTEM\PLAYLIST\alllist.plp
で
あと、\MUSIC以下のディレクトリはそれぞれ別個にプレイリストを作ることにして、
cd \music && for /d %d in (*) do cd "%~d" & (@echo PLP PLAYLIST & echo VERSION 1.20 & echo. & dir /b /s *.mp3 *.wav *.wma|sort) | sed -e 's/^.:\\\\/HDD, /g' -e 's/ \+$//g'| ruby -rnkf -e 'while line = ARGF.gets ; print NKF.nkf("-Lw -w16L0 -x --cp932inv --ms-ucs-map", line) ; end' >"\SYSTEM\PLAYLIST\%d.plp" & cd \music
とかで。