エプソンダイレクト株式会社

2016年12月4日(日曜日)

フォルダ内の圧縮ファイルを再帰的に展開

Category: Tips | Posted By 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
みたいな感じで展開するためのバッチファイルです。

トラックバック URL

コメント&トラックバック

-o”%%~di\data%%~pi” “%%i”
ここは引用符がある方がよいのではないでしょうか。でないと、空白を含むファイル名などで問題が生じます。

コメントフィード

コメント





XHTML: 以下のタグが利用可能です。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

HP Directplus -HP公式オンラインストア- デル株式会社 東芝ダイレクト 富士通パソコンFMVの直販サイト富士通 WEB MART ソフマップ・ドットコム