• コマンドプロンプト (cmd.exe) にはzip解凍のコマンドが無い。
  • PowerShellの Expand-Archive コマンドを使う。
  1. 基本
  2. 解凍先フォルダを指定
  3. 解凍先フォルダが存在しても上書き
  4. 使い方の例

基本

PowerShellの Expand-Archive でzipを解凍できるから、コマンドプロンプトからPowerShellを call すれば、実質コマンドプロンプトで解凍できる……。

以下のコマンドを実行すると、カレントフォルダに myzip フォルダが作成され、その中に myzip.zip を解凍した中身が置かれる。

call powershell -command "Expand-Archive myzip.zip"

PowerShell側のカレントフォルダはコマンドプロンプト側と同じになるから、ファイルパスは現在の場所からの相対指定が可能。

解凍先フォルダを指定

以下のようにフォルダ名を指定することもできる。こちらの場合、カレントフォルダに piyopiyo フォルダが作成され、その中に zipfile.zip を解凍した中身が置かれる。

call powershell -command "Expand-Archive zipfile.zip piyopiyo"

解凍先フォルダが存在しても上書き

ここまでのコマンドだと、カレントフォルダに解凍先のフォルダがすでに存在する場合はエラーになる。

エラーにしたくない場合は下記のように -Force を付与する。

call powershell -command "Expand-Archive -Force zipfile.zip piyopiyo"

ただし -Force をつけても既存のフォルダを消して再作成するわけではないので、よけいなファイルが解凍先のフォルダに存在したら残ってしまうのは留意。

使い方の例

コマンドプロンプトでWindows用のNode.jsランタイム (v14.15.4) をカレントフォルダにダウンロードして解凍し、C:\path\to\dev\node に移動させ、ゴミも片付ける例。

curl --silent https://nodejs.org/dist/v14.15.4/node-v14.15.4-win-x64.zip --output node-v14.15.4-win-x64.zip
call powershell -command "Expand-Archive node-v14.15.4-win-x64.zip"
del node-v14.15.4-win-x64.zip /Q

move node-v14.15.4-win-x64\node-v14.15.4-win-x64 C:\path\to\dev\node
rmdir node-v14.15.4-win-x64 /Q

(最近のWindowsは標準で curl がつかえるよ)