7-zip+PowerShellでBMSアーカイブを可能な限り丁寧に一括解凍する

要約

BOFU2016ですね。

今年は例年以上に登録BMSに対する意見や文句を聞く気がしています(俺も言っている気がします)。

音量容量1本WAVなどいろいろありますが、導入時における最たる障害である「適切なフォルダ構造の判断」をなるべく少ないソフトウェアで解決しようと思い今回PowerShellスクリプトを書きました。

BOFU2016に関してはパッケージ化がもう済んでいることもありあまり需要がない気もしますが、まあもちろんこのイベント以外でも普通に使えると思います。Resilio Syncのやつからまだ展開が済んでいない方などはどうぞ。

なお、同様の方法として以下の方法があるけれども、フォルダ構造を完全に破壊してしまうのでお勧めしません。BOFU2016-num=585などはプレイ不能になると思う。

qiita.com

使い方は

0 前準備

多分実行時に実行ポリシーがなんたらという表示が出る人が多いと思うので以下の記事らへんを参考にしてください。 www.atmarkit.co.jp qiita.com

1 PowerShellを開き、アーカイブがあるディレクトリに移動

cd C:/path/to/bmsarcs

2 7-zipにPATHを通す

7z とだけ打ってオプションとかがずらっと色々出てくればOK。でなければ手動で追加 $Env:Path += 'C:\Program Files\7-Zip;' ※これは一例です

3 ./bmsext.ps1

これで展開が始まる。デフォルトではアーカイブの拡張子を除いた部分をフォルダ名とするけど、./bmsext.ps1 -DirNameMajoredとすると「アーカイブ内に子ディレクトリが存在すれば、フォルダ名としてその子ディレクトリ名を優先」するようになります。

たまにファイルがスキップされます(***Skipped: ファイル名***みたいな)。これはBMSが存在するディレクトリの上位ディレクトリにファイルが存在することにより適切な階層が特定できないためです。手動で展開してください。

gist.github.com