フォルダ内のフォルダ毎にzip圧縮するbatファイル(WinRAR使用)

概要

batと同じ階層のフォルダ毎にzip圧縮する作業を自動化するbatファイルの紹介。WinRAR使用。

ソース

メモ帳にコピペしてbatにしてください。
rem カレントディレクトリのフォルダをすべてzipにする。

@echo off
echo start program
echo 

rem 拡張子。zipかrarを指定する。
set a=zip 

rem winrar.exeがあるディレクトリの指定
set b="C:\Program Files\WinRAR\WinRAR"

for /d %%i in (*) do echo %%i&%b% a -ibck -df "%%~ni.%a%" "%%i"

echo 
echo end program
PAUSE


<2021/11/13追記> GoogleDriveのリンク権限が切れたのでソースを直接貼っときます。

仕様

  • 実行したディレクトリ直下のフォルダのみを全てフォルダ毎に圧縮する。
  • 圧縮したフォルダとその中身は削除します。
  • エラーが出たらエラー画面(WinRARのもの)が出て、エラー画面を閉じると次のフォルダの圧縮を実行します。エラーを無視して進めたいときはforの部分の [a -df]の間に[-inul]と追加してください。
  • 今何を圧縮しているか表示するようにしました。 (12/22)
  • 拡張子の前のドット以外で、ファイル名にドットがあるとファイル名が途切れてしまうので注意。

使い方

  • 上のソースをメモ帳にコピペして「~(何でもいい).bat」と保存し、実行したいディレクトリにコピーして実行。
  • ソースに書いてあるけどzipかrarの指定、WinRAR.exeのパス指定(インストールした場所にある)には注意。32bitPCか、64bitPCで64bit版を使用し、デフォルトでインストールしていれば気にする必要はありません。

2 件のコメント :

  1. こんにちは。大量のファイル圧縮で便利に使用させていただいています。
    拡張子以外のドットでファイル名が途切れてしまうのはどうしようもないのでしょうか?ミスチルなど必ず名前にドットが入る場合があり困っています。

    返信削除
    返信
    1. batファイルで処理するには仕様的に無理だとおもいます。
      正規表現が使えるスクリプト言語で組めば容易ですが、ちょっとお勉強しないとできないです。すみません。

      削除