Windows 10でコマンドラインから複数のファイル・フォルダをzip圧縮
- コマンドプロンプト (cmd.exe) にはzip圧縮のコマンドが無い。
- PowerShellの
Compress-Archive
コマンドを使う。
Caution
この記事の方法で作ったzipファイルをAWS Lambdaにアップロードしたら、パスのセパレータがバックスラッシュになってました。
Linuxに持っていく場合は、潔く zip
コマンドを入れて作った方がいいと思います。
Windowsで zip
を使う方法は以下記事が参考になりました。
Windowsのコマンドプロンプトでzipコマンドを使用可能にする方法 - Qiita
ファイル名を指定して圧縮
あらかじめ、PowerShellを開いて作業ディレクトリに cd
しているものとします。(PowerShellは、スタートメニューから『Windows PowerShell』を探すか、タスクバーの検索ボックスに『PowerShell』と入力すれば出てきます。)
カレントディレクトリのファイル aaa.txt
と bbb.txt
を、compressed.zip
として圧縮するには、以下の通りにコマンド実行します。
-Force と -Update
-Force
は、すでに -DestinationPath
のファイルが存在したら上書きするようにというオプションです。つけないと、すでに同名のzipファイルが存在した場合にエラーとなります。
類似のオプションで -Update
というのもありますが、そっちは既存のzipファイルに新しいzipファイルを結合して更新するものです。例えば以下のコマンドで作成した compressed.zip
には、最終的に aaa.txt
bbb.txt
両方とも残ってます。
ワイルドカードでファイルを指定して圧縮
カレントディレクトリに存在する、ファイル名が .txt
で終わる全てのファイルを compressed.zip
として圧縮するには、以下の通りに実行します。
フォルダを指定して圧縮
カレントディレクトリのフォルダ ccc
を compressed.zip
として圧縮するには、以下の通りに実行します。
この場合、出来上がった compressed.zip
を右クリックして『ここに解凍』した時に出てくるフォルダの名前は ccc
になります。
PowerShellスクリプト化してみる
個人的な話ですが、この記事の内容は、リリース用のファイルをzipで固めるのを自動化したくて調べたんでした。なのでPowerShellスクリプト化します。
以下の内容を zip.ps1
として保存します。(PowerShellスクリプトの拡張子は ps1
らしいです。)
起動するには、できあがったファイルを右クリックして『PowerShellで実行』を選択します。
するとこのスクリプトの場合、カレントディレクトリのファイル aaa.txt
と bbb.txt
を compressed.zip
として圧縮してくれます。
参考にさせていただいた記事
Powershellでzipファイルを作る - DISTRICT 37
管理者権限なしでPowerShellスクリプトを実行する方法 - Qiita
PowerShell/ファイル操作/ファイル・フォルダの存在確認 Test-Path - yanor.net