参考サイト様:https://kiwamiden.com/how-to-make-a-batch-that-creates-zip-for-each-folder
複数ファイルを個別にzipファイルにしたい、という状況になったのですが、一つ一つ圧縮していては面倒。
ならば、そういった処理をまとめて行えるバッチを作成すれば良いじゃないか、ということで調べてみました。
方法は、圧縮ツール(Lhaplus、7-Zip)を利用し、バッチを実行する方法があり、今回は、7-Zipを使用することにしました。
7-Zipをインストール済みでない方向けに、リンクを張っておきます。
こちらのリンクからダウンロードが可能です。
バッチを作成する
右クリック > 新規作成 > テキストドキュメント を選択し、テキストファイルを作成します。
一旦、名前はなんでも良いです。
以下の内容を張り付け
@echo off
set ZIP_PATH="C:Program Files7-Zip7z.exe"
for %%f in (%*) do (
%ZIP_PATH% a -tzip %%f.zip %%f
)
2行目のset exe7z="C:Program Files7-Zip7z.exe"に関しては、自分のpcにインストールされた7-Zipの場所を指定してください。
例: set exe7z="インストール先"
その後、ファイル名を「zip.bat」に変更。
これで作成完了です。
後は、zipに圧縮したいファイルを複数選択して、"zip.bat"にドロップしてやれば、選択ファイルと同じ階層に圧縮されたzipファイルが生成されます。
ファイル数が多く処理ができない場合
ファイル数があまりに多いと、処理が実行されないことがあります。
実行されなかった方のなかには「ファイル名または拡張子が長すぎます。」というエラーメッセージが出たかもいるのではないでしょうか。(出ない場合もあります)
要するに"文字数"が多く処理ができていないだけです。
"文字数"というのはファイルのパスのことです。
例 : C:Program Files7-Zip
このパスが相対パスではなく、絶対パスで指定されているため、できるだけCドライブに近づけたほうが一度に処理できるファイル数は多くなります。