social.hidekisaito.com

HSSingLogを改良してPowerShellで以下のような構文を可能にした。

(Get-HSLConsolidated /path/to/HSSingLog) | Where-Object { $_.Artist -eq "Kalafina" } | New-HSLConsolidatedFile -FileType csv -Output kalafina.csv

少しハマったのがWhere-Objectから出される配列をNew-HSLConsolidatedFileが処理する場合、それぞれのデータが一つの要素として出力されるため、ProcessRecordが複数回呼ばれるということ。なので、受けるコード側にはProcessRecordでリストに溜め込んでから、EndProcessingで一気に書き出す方式をとった。

ProcessRecordで追記で出していく、という方法もあるけど、このツールの場合はExcelフォーマットなどのバイナリの書き出しも使えるようにしているので、こっちの方が現実的っぽい。