バッチでZIP化!パスワード付き圧縮や削除も自動化する方法【7-Zip×PowerShell】

スポンサーリンク
この記事は約10分で読めます。

「バックアップを取りたいけど、毎回手動でZIP圧縮するのは面倒くさい・・・」

そんな悩みを抱えたことはありませんか?
この記事ではWindowsのバッチファイルだけでフォルダをZIP化する方法を、PowerShellの標準機能と定番ツール 7-Zipの2通りでわかりやすく解説します。さらに、業務でも役立つパスワード付きZIPの作り方日付入り自動バックアップまで、すぐコピペできるサンプル付きで網羅しました。

この記事で得られること

  1. PowerShell だけで素早く ZIP を作成
  2. 7‑Zip を使った高圧縮&パスワード保護
  3. バッチファイルに日付を埋め込むテクニック
  4. タスクスケジューラと組み合わせた「放ったらかしバックアップ」
  5. 実用上つまずきやすいポイントとその対処法

対象読者

  • Windows 環境でファイル・フォルダのバックアップを自動化したい方
  • 社内共有や機密ファイルの送付で パスワード付き ZIP が必要な方
  • 「コマンドプロンプトや PowerShell はちょっと触ったことがある」レベルのエンジニア/非エンジニア

「自動で ZIP して、終わったらフォルダも整理完了」——そんな快適ワークフローを、今日からあなたの環境でも実現しましょう!

方法1:PowerShellでZIP化

Windows10以降の環境なら、PowerShellの標準コマンドだけでZIP化が可能です。別途ソフトをインストールする必要がなく、誰でもすぐに試せるのが魅力です。

基本的な構文

powershell Compress-Archive -Path "C:\SampleFolder" -DestinationPath "C:\Backup\Sample.zip"

このバッチファイルを保存して実行するだけで、C:\SampleFolder フォルダを ZIP ファイルに圧縮し、C:\Backup\Sample.zip に出力してくれます。

各オプションの解説

オプション名説明
-PathZIP に含めたいファイル/フォルダのパス(複数指定も可能)
-DestinationPath作成する ZIP ファイルの保存先と名前

※あらかじめC:\Backup フォルダが存在している必要があります。なければ先に作成しておきましょう。

■ 注意ポイント①:パスに空白や日本語がある場合

パスに空白や日本語が含まれているときは、ダブルクォーテーションで囲うことで回避できます。

powershell Compress-Archive -Path "C:\My Documents\プロジェクト資料" -DestinationPath "C:\Backup\資料.zip"

■ 注意ポイント②:上書き不可

Compress-Archive は、同名の ZIP ファイルがすでに存在している場合、エラーになります(上書き不可)。このため、既存ファイルを削除してから実行したり、日付入りファイル名にするなどの工夫が必要です。

例:既存ZIPを削除してから実行

del "C:\Backup\Sample.zip"
powershell Compress-Archive -Path "C:\SampleFolder" -DestinationPath "C:\Backup\Sample.zip"

■ 実行結果の確認

処理が成功すれば、指定した場所にZIPファイルが作成され、中身を確認すれば元のフォルダ構造がそのまま保たれているはずです。

PowerShellのZIP機能は簡単で手軽ですが、パスワード付きのZIPの作成はできないという制限があります。
そのため、次のセクションではより柔軟な「7-Zip」を使った方法をご紹介します。

方法2:7-ZipでZIP化

PowerShellだけでは”パスワード付きZIP”が作れない — そんな時に頼りになるのが7-Zip
無料・高圧縮・コマンドライン対応と三拍子そろった定番ツールです。ここではバッチファイルで7-Zipを呼び出してZIPを作成する手順を、基本編 → パスワード編 → 応用編 の順にまとめます。

7-Zipの準備とパス設定

  1. 公式サイトhttps://www.7-zip.org/)から 64bit 版インストーラをダウンロード
  2. インストール後、実行ファイルのフルパスを確認
    既定インストール先は、C:\Program Files\7-Zip\7z.exe です。
  3. 環境変数 PATH に 7‑Zip のフォルダを追加しておくと、どのディレクトリからでも 7z.exe を呼び出せます。
    ※追加が難しい場合は、バッチ内でフルパス指定でも OK

基本のZIP化(パスワードなし)

"C:\Program Files\7-Zip\7z.exe" a "C:\Backup\Sample.zip" "C:\SampleFolder\*"
コマンド意味
aadd:ZIP を “新規作成または追記” する
"C:\Backup\Sample.zip"出力先 ZIP ファイル
"C:\SampleFolder\*"圧縮対象(末尾 \* でフォルダ配下をすべて)
  • 既に同名 ZIP があると “追記” され、上書きではありません。毎回きれいに作り直したいなら先に del で削除するか、日付入りファイル名にしましょう。
  • パスに空白/日本語がある場合はダブルクォーテーション必須。

パスワード付きZIP(AES-256暗号化)

"C:\Program Files\7-Zip\7z.exe" a ^
 -tzip ^
 -pMyStrongPass123! ^
 -mem=AES256 ^
 "C:\Backup\SecureSample.zip" "C:\SampleFolder\*"
オプション説明
-tzip出力形式を ZIP 指定(既定は 7z)
-p<password>パスワード設定。-p と文字列の間にスペースを入れない
-mem=AES256暗号化方式を AES‑256 に指定(推奨)

注意

  • パスワードはコマンドラインに平文で残る ので、バッチファイルの権限管理に注意。
  • Windows 標準のエクスプローラーからは AES‑256 で暗号化された ZIP を展開できないことがあります。配布相手にも 7‑Zip などの対応ツールを案内しておきましょう。

日付付きファイル名で自動バックアップ(応用)

@echo off
for /f "tokens=1-4 delims=/ " %%a in ("%date%") do (
    set YYYY=%%a
    set MM=%%b
    set DD=%%c
)
set ZIPNAME=SecureBackup_%YYYY%-%MM%-%DD%.zip

"C:\Program Files\7-Zip\7z.exe" a -tzip -pMyStrongPass123! -mem=AES256 ^
 "C:\Backup\%ZIPNAME%" "C:\SampleFolder\*"

これで SecureBackup_2025-07-10.zip のように日付入りファイルが毎日生成できます。
タスクスケジューラで 1 日 1 回このバッチを実行すれば、“放ったらかしバックアップ” 完成です。やり方は次のセクションで詳しく紹介します。

よくあるエラーと対処法

症状原因解決策
Error: Incorrect commandオプションのタイポスペル確認。特に -p とパスワードの間にスペースを入れない
ZIP が壊れて展開できないネットワークドライブに直接保存いったんローカルに作成してから移動
パス長制限エラーフォルダ階層が深過ぎ一時フォルダへコピーして圧縮 or Windows で長いパスを許可

これで 7‑Zip を利用した 高圧縮 & パスワード付き ZIP の作成はバッチリ。
次のセクションでは「4. 日付付き ZIP で自動バックアップ」をより詳しく掘り下げ、タスクスケジューラ設定まで解説していきます!

日付付きZIPで自動バックアップ(応用編)

毎回同じファイル名で ZIP を上書きするのではなく、「日付入りのファイル名」で毎日自動バックアップできたら便利ですよね?
ここでは、バッチファイルでシステム日付を取り込み、ZIPファイル名に組み込む方法をご紹介します。
さらに、Windowsの「タスクスケジューラ」と組み合わせて完全自動化する流れまで解説します。

バッチファイルの作り方はこちらの記事で解説しています。ぜひご覧ください。

バッチで日付付きファイル名を作る

@echo off
for /f "tokens=1-4 delims=/ " %%a in ("%date%") do (
    set YYYY=%%a
    set MM=%%b
    set DD=%%c
)
set ZIPNAME=Backup_%YYYY%-%MM%-%DD%.zip
powershell Compress-Archive -Path "C:\SampleFolder" -DestinationPath "C:\Backup\%ZIPNAME%"

7-Zipで日付つき&パスワード付きZIPを作る例

@echo off
for /f "tokens=1-4 delims=/ " %%a in ("%date%") do (
    set YYYY=%%a
    set MM=%%b
    set DD=%%c
)
set ZIPNAME=SecureBackup_%YYYY%-%MM%-%DD%.zip

"C:\Program Files\7-Zip\7z.exe" a -tzip -pMyStrongPass123! -mem=AES256 ^
 "C:\Backup\%ZIPNAME%" "C:\SampleFolder\*"

セキュリティ重視の方は、パスワードを環境変数から取得するようにすると、バッチファイルに平文で残さずに済みます(応用テク)。

タスクスケジューラで「毎日自動実行」する方法(手順)

1. 「タスクスケジューラ」を起動
  Windowsキー → 「タスクスケジューラ」と検索


2. 「基本タスクの作成」をクリック

  • 名前を入力します。(例:「毎日のバックアップ」など)
  • トリガーを選択します。(毎日/開始時刻を設定)
  • 「プログラムの開始」を選択します。

3. バッチファイルを指定

4. 完了

よくあるトラブルと対策

バッチファイルやZIP作成処理は、一見うまく動いているようで小さな落とし穴が潜んでいることもあります。
ここでは、実際に起こりやすいエラーや失敗例とその対処法をまとめました。

バッチファイルが実行できないといったエラーが発生する場合はこちらが参考になります。

トラブル一覧と対処法

症状主な原因解決策
ZIPファイルが作成されないパスの記述ミス、対象フォルダが空ダブルクォーテーション付きでパスを指定。存在確認を入れる。例:if exist "C:\SampleFolder" (…処理…)
PowerShellでエラーになる実行ポリシーが制限されている一時的にバイパス:powershell -ExecutionPolicy Bypass -Command …
上書きされてしまう/追記されてしまう同名ZIPを削除せず実行バッチの最初にdelコマンドを入れるか、日付をファイル名に入れて毎回新規作成
ZIPが壊れて開けないネットワーク経由の保存ミス・途中で中断一度ローカルに保存してから移動するのが安全
ZIP作成後に元フォルダが削除されない処理順ミス、ZIP失敗時も削除実行されているif exist で ZIP 成功時だけ削除するように制御
パスワードが効いていない(7-Zip)オプションの書き方ミス-pパスワード-p と文字列の間にスペースを入れないよう注意
ZIPにしたファイル名が文字化けする7-Zip使用時、バッチの文字コード不一致バッチファイルを「ANSI」または「UTF-8 BOMあり」で保存する

まとめ

ここまで、バッチファイルでフォルダをZIP化する方法を、標準機能と外部ツールの2通りで解説してきました。
この記事を参考にして、あなたの環境にぴったりの自動バックアップ処理が完成すれば幸いです。
「定期的にZIP圧縮 → 保存 or 送信 → 元データの削除」まで、全部バッチで完結できますよ!

Uncategorized
スポンサーリンク
なんくるをフォローする

コメント

タイトルとURLをコピーしました