2016年12月4日(日曜日)
フォルダ内の圧縮ファイルを再帰的に展開
Category: Tips | Posted By ackie at 23:10:23…とタイトルでわかる方がどれだけいるかはともかく…
先日ホームページ制作のデータが必要だったので
お客様の所にお伺いしメーカー様のホームページから
ひたすら画像データをダウンロードしていました。
ちなみに画像のカテゴリは 30 以上あり、
それがその中でページごとだったり、
内容ごとだったりで各々別れており、
さらにそこで別れた先に画像一つ毎に
zip ファイルで圧縮されているという状態…。
中には重複するものもあるのですが、
それらをひたすらダウンロードをするのは
単純作業なのでかなり苦痛でした…(苦笑)。
さてそれらを持って帰ったはいいのですが、
それらを階層構造を保ったままで
zip ファイルを解凍していく…というのは
ファイルの数を考えるとかなりぞっとします。
というわけでこういう時にこそ
何かフリーウェアで便利なものを…とも考えたのですが
色々インストールするのも考え物ですしね。
今回はバッチファイルで対応します。
といっても 7-Zip というプログラムは利用しますので
必要な方は 7-Zip のホームページから
ダウンロードしておいてください。
@echo off for /r %%i in (*.zip) do "C:\Program Files\7-Zip\7z.exe" x -o%%~di%%~pi %%i
上記の部分をテキストファイルに張り付け、
ファイル名を任意の名前.bat(例:extract.bat )で保存してください。
そのバッチファイルを zip ファイルのあるフォルダにコピーし
バッチファイルをダブルクリックすることで、
zip ファイルの場所に各ファイルを展開していきます。
ただ私の場合は zip ファイルと
展開されたファイルを分けたかったので
@echo off for /r %%i in (*.zip) do "C:\Program Files\7-Zip\7z.exe" x -o%%~di\data%%~pi %%i
としました。
この場合は、そのドライブの直下に data というフォルダを作成し
その中に階層構造を保ったまま展開していきます。
ちなみに C:\Program Files\7-Zip\7z.exe は 7zip を
インストールしたフォルダになりますので各自で変更してください。
なお 7z.exe はコマンドラインで
7-zip を利用するためのコマンドです。
私の場合は外付ドライブに保存したので
こっちの方が都合がよかったのですが…。
7z.exe の -o オプションは展開先です。
%%~di は展開するファイルのあるドライブ、
%%~pi は展開するファイルのパスからドライブ名を除いたディレクトリ構造、
%%i は展開する各ファイルそのものを現します。
それらを for /r で再帰的に処理しています。
-o 以降は自分好みに変えてください。
今回は例えば
f:\zipfiles\…\…\hoge.zip
みたいなのがいっぱいあるものを
f:\data\zipfailes\…\…\hoge.eps
みたいな感じで展開するためのバッチファイルです。