Windows環境で複数ファイルを一括でZIP圧縮し、さらにパスワード付きで暗号化したい場面は少なくありません。特に、個人情報や業務ファイルなどをメール送信や保管する際、セキュリティ対策としてZIPにパスワードをかけることは重要です。本記事では、パスワード付きZIPを自動生成するバッチファイルの作り方を紹介します。
パスワード付きZIPを作成するための準備
Windows標準のコマンドではパスワード付きZIPの作成はできないため、別途ツールの導入が必要です。この記事では、広く使われている無料のコマンドライン圧縮ツール「7-Zip(7z.exe)」を使用します。
7-Zipのインストールと準備
- 7-Zip公式サイトから「7-Zip」のインストーラーをダウンロードしてインストールします。
- インストール先の 7z.exe のパス(例:C:\Program Files\7-Zip\7z.exe)をメモしておきます。
基本的なバッチファイルの構文
以下は、単一のフォルダ内のファイルをすべてパスワード付きでZIP化するバッチファイルの例です。
@echo off
setlocal enabledelayedexpansion
rem 圧縮対象フォルダ
set INPUT_DIR=C:\zip_target
rem 出力先フォルダ
set OUTPUT_DIR=C:\zip_output
rem 7z.exe のパス
set ZIP_CMD="C:\Program Files\7-Zip\7z.exe"
rem パスワード(任意に変更)
set PASSWORD=yourpassword
rem 日付付きファイル名を作成
set ZIP_FILE=%OUTPUT_DIR%\backup_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.zip
%ZIP_CMD% a -tzip "%ZIP_FILE%" "%INPUT_DIR%\*" -p%PASSWORD% -mem=AES256
echo 圧縮が完了しました: %ZIP_FILE%
pause
このバッチファイルを実行すると、指定したフォルダ内のすべてのファイルがAES256で暗号化されたZIPファイルにまとめられ、指定した出力フォルダに保存されます。
複数フォルダ・ファイルを一括で暗号化する処理
複数のフォルダをまとめて個別のZIPファイルに圧縮したい場合は、以下のようにループを使用します。
@echo off
setlocal enabledelayedexpansion
rem 対象ディレクトリのパス
set BASE_DIR=C:\zip_targets
rem 出力先
set OUTPUT_DIR=C:\zip_output
rem 7z.exe のパス
set ZIP_CMD="C:\Program Files\7-Zip\7z.exe"
rem パスワード
set PASSWORD=secure123
for /d %%F in (%BASE_DIR%\*) do (
set FOLDER_NAME=%%~nF
set ZIP_PATH=%OUTPUT_DIR%\!FOLDER_NAME!.zip
%ZIP_CMD% a -tzip "!ZIP_PATH!" "%%F\*" -p%PASSWORD% -mem=AES256
echo %%F を圧縮しました → !ZIP_PATH!
)
pause
このスクリプトは、BASE_DIR 配下の各フォルダごとにZIPファイルを生成し、すべてに同じパスワードを設定して保存します。
注意点と補足
- 7z.exe を使うためには、その実行ファイルのパスが通っているか、フルパスで指定する必要があります。
- 圧縮処理には時間がかかる場合があるため、大量ファイルを扱うときはログ出力などを加えると便利です。
- パスワードは暗号化されずにバッチファイル内に記載されるため、バッチファイル自体の管理にも注意が必要です。
まとめ
バッチファイルと7-Zipを組み合わせることで、誰でも簡単にパスワード付きZIPファイルを自動生成できるようになります。業務の効率化やセキュリティ強化のために、ぜひ活用してみてください。