提出データを用意している時に、フォルダごとにZIPを作りたいなーっということが多々あります。
コレくらいできるだろっと色々探してみたものの、以外とないもんですね、、、あまりこういうこと考える人いないのかな、、、(;´∀`)
っということで、今回はバッチでツールを作成して、フォルダをD&DしたらフォルダごとにZIPにするようにしてみたいと思います(`・ω・´)ゞ
エコー機能のOFF
まずは、batに書いたコマンドが表示されないようにしたいと思います!
1 | @echo off |
7-zipのパスを定義
次に「7-zip」のパスを定義します。インストールディレクトリにあわせて変更してください(`・ω・´)ゞ
コマンドラインから使用できる「7-zip」は「7z.exe」になります。
1 2 | @echo off set ZIP_PATH= "C:\Program Files\7-Zip\7z.exe" |
繰り返し処理
ココからは、D&Dされたフォルダを一個ずつ処理していきます!まずは、繰り返し処理の骨格だけ記述します。
1 2 3 4 | @echo off set ZIP_PATH= "C:\Program Files\7-Zip\7z.exe" for %%f in (%*) do ( ) |
繰り返し処理でやりたいことは、「do()」の中に記述していきます。「7-zip」を使って、ZIPを作って行きましょう!
7-zipのコマンドラインの書式は以下の通りです。
7z <command> [<switch>…] <base_archive_name> [<arguments>…]
まず今回はZIPを作成したいので、コマンド「a」を指定します。他にもZIPからファイルを削除する「d」、ZIPにあるファイルを解凍する「e」などがあります。
次にどんな書庫を作成するかスイッチ「-t{Type}」の指定をします。今回はzipなので「-tzip」となります!
あとは、一個ずつ取り出した変数「%%f」を使って、Input、Outputを指定してコマンドを組み立てます。
1 2 3 4 5 | @echo off set ZIP_PATH= "C:\Program Files\7-Zip\7z.exe" for %%f in (%*) do ( %ZIP_PATH% a -tzip %%f.zip %%f ) |
ウインドウが消滅しないように
最後に、処理がおわったらウインドウが急に消滅しないように「pause」を追加します。これで何かキーを押すまでウインドウが表示されたままになります。
1 2 3 4 5 6 7 | @echo off set ZIP_PATH= "C:\Program Files\7-Zip\7z.exe" for %%f in (%*) do ( %ZIP_PATH% a -tzip %%f.zip %%f ) pause |
早速実行してみると、このようにフォルダごとにZIP圧縮されてました!(*´ω`*)b