Help us understand the problem. What is going on with this article?

超簡単! Powershellでファイルの圧縮/解凍

powershellを使ったファイルの圧縮/解凍

powershellで簡単にファイルを圧縮/解凍できたため、メモ。

1. 圧縮

Compress-Archive

Compress-Archive -Path C:\Users\.... -DestinationPath C:\Users\XXX\....

これだけ。めちゃめちゃ簡単。
以下、パラメータの解説。

-Path
必須パラメータ。Compress(圧縮)するファイル/フォルダのパスを指定する。
複数ファイル指定することも可能。ワイルドカードの使用も可能。

-DestinationPath
必須パラメータ。Compress(圧縮)先のパスを指定する。

-Force
上書きする。-Forceパラメータ無しでは、-DestinationPathで指定したzipファイルが既に存在する場合、実行に失敗する。このパラメータを知らず、先日ジョブがこけた。

-Update
既存のzipファイルを更新する。

その他、CompressionLevel、Confirm等のパラメータがあるっぽい。
詳しく書いてある記事がこちら。
[https://cheshire-wara.com/powershell/ps-help/compress-archive-help/]

2. 解凍

Expand-Archive

Expand-Archive -Path C:\Users\.... -DestinationPath C:\Users\XXX\....

これだけ。これもめちゃめちゃ簡単。
以下、パラメータの解説。

-Path
必須パラメータ。Expand(展開)するzipファイルを指定する。

-DestinationPath
必須パラメータ。Expand(展開)先のパスを指定する。

-Force
上書きする。

作ってみた

1 zipファイルを作成するバッチファイルを作成した。

compress-archive.bat
@echo off

rem -フォルダの有無を確認し、ファイルが存在した場合圧縮する

set base_path=C:\Users\XXX\Desktop\compress
set powershell_exe="C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell\Windows PowerShell.lnk"
set destination_path=C:\Users\XXX\Desktop\destination

if not exist %base_path% (
    eventcreate /T ERROR /SO test /ID 001 /D "test用イベントログ" /L APPLICATION
    exit /b 1
)

%powershell_exe% Compress-Archive -Path %base_path%\* -DestinationPath %destination_path%\test.zip -Force

exit /b 0

2 zipファイルを解凍するバッチファイルを作成した。

@echo off

rem -ファイルの有無を確認し、あった場合解凍する

set zip_file=C:\Users\XXX\Desktop\destination\test.zip
set powershell_exe="C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell\Windows PowerShell.lnk"
set destination_path=C:\Users\XXX\Desktop\expand

if not exist %zip_file% (
    eventcreate /T ERROR /SO test /ID 002 /D "test用イベントログ" /L APPLICATION
    exit /b 1
)

%powershell_exe% Expand-Archive -Path %zip_file% -DestinationPath %destination_path% -Force

exit /b 0

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away