【Powershell】ファイルとフォルダを圧縮させる方法(Compress-Archive)

Powershell Powershell
この記事は約3分で読めます。

Windowsで複数のファイルやフォルダをまとめたい場合、ZIP形式で圧縮する方法が一般的です。

PowerShellを使用すると、GUI操作を行わずにスクリプトで自動的に圧縮処理を行うことができます。

本記事では、PowerShellを使ってファイルやフォルダをZIP形式に圧縮する方法を解説します。

広告

1.PowerShellで圧縮する方法(Compress-Archive)

PowerShellには、Compress-Archive コマンドレットが標準で用意されています。
このコマンドを利用することで、簡単にZIPファイルを作成できます。

基本構文は以下です。

Compress-Archive -Path <圧縮したいファイルやフォルダ> -DestinationPath <出力ZIPのパス>

-Path に圧縮したいファイルやフォルダを指定し、
-DestinationPath に作成したいZIPファイルのパスを指定します。

1.単体ファイルをZIPに圧縮する

まずは一番シンプルな単体ファイルをZIPに圧縮する例です。

 # 圧縮するファイルのフルパス
$SourceFilePath = "C:\hogehoge.txt"

 # 出力するZIPファイルのフルパス
$ZipFilePath = "C:\CompressedFile.zip"

 # ファイルを圧縮
Compress-Archive -Path $SourceFilePath -DestinationPath $ZipFilePath

これで hogehoge.txt が ZIP ファイルに変換されます。

補足:事前に Test-Path で確認しておくと安心です。
圧縮前は False、圧縮後に True になれば成功。


2.フォルダ全体をZIPに圧縮する

フォルダ全体をZIPに圧縮したいときも基本は同じです。

 # 圧縮するフォルダパス
$SourceFolderPath = "C:\hogehoge"

 # 出力するZIPファイルのフルパス
$ZipFolderPath = "C:\CompressedFolder.zip"

 # ファイルを圧縮
Compress-Archive -Path $SourceFolderPath -DestinationPath $ZipFolderPath

3.複数ファイルを1つのZIPに圧縮する

複数ファイルを1つのZIPに圧縮する場合は配列で渡します。

 # 圧縮するファイルのフルパス(複数)
$SourceFiles = "C:\FileA.txt", "C:\FileB.txt"

 # 出力するZIPファイルのフルパス
$ZipFilePath = "C:\CompressedFiles.zip"

 # 複数のファイルを圧縮
Compress-Archive -Path $SourceFiles -DestinationPath $ZipFilePath

これで FileA と FileB が一緒に ZIP 化されます。

フォルダとファイルを混ぜて指定することも可能です。


4.注意点

以下、Powershell で圧縮する際の注意点です。

  • 既存のZIPファイルに追記はできず、上書きとなる。
  • 大量ファイルや大容量だと処理に時間がかかる。
  • 保存先に書き込み権限がないと失敗する。

5.まとめ

Compress-Archive を使えば、PowerShellだけで ファイルやフォルダを簡単にZIP圧縮 できます。

  • ファイル単体
  • フォルダごと
  • 複数ファイルまとめて