2025/10/24

ZIP ファイルの解凍

今回は ZIP 圧縮されたファイルを LotusScript で解凍する方法を紹介します。


ZIP ファイルの解凍

利用するのは PowerShell の Expand-Archive コマンドです。構文やパラメータの詳細は Microsoft Learn の Expand-Archive をご確認ください。

Expand-Archive
      [[-DestinationPath] <String>]
      -LiteralPath <String>
      [-Force]
      [-PassThru]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

利用するパラメータは次の3つです。

-DestinationPath 解凍先のフォルダ
 -LiteralPath 解凍する ZIP ファイルのパスとファイル名
-Force 上書き保存する場合に指定

ちなみに PowerShell は Windows で利用できるスクリプトやコマンドの実行環境で、Windows 7 以降で利用できます。Windows 登場以前のコマンドプロンプト(cmd.exe)、Windows 98 以降で利用可能のとなった WSH(Windows Script Host)を統合して進化させたような存在といえます。


サンプルプログラム

C ドライブの Tmp フォルダにある ZIP ファイルを解凍するサンプルは次の通りです。

sCMD には PowerShell で実行する解凍コマンド、sPS には WSH で PowerShell を実行させるコマンド文字列をセットしています。PowerShell を実行するのに 前回 紹介した WSH を利用している点がポイントですね。

   Dim oWSH As Variant
   Dim sZIP As String    ' ZIP ファイルのパスとファイル名
   Dim sFol As String    ' 解凍先のフォルダ
   Dim sCmd As String
   Dim sPS As String

   ' 初期化
   sZIP = "C:\Tmp\ken_all.zip"
   sFol = "C:\Tmp\"

   ' PowerShell コマンドを作成
   sCmd = |Expand-Archive|
   sCmd = sCmd & | -LiteralPath '| & sZIP & |'|                ' ZIP ファイル
   sCmd = sCmd & | -DestinationPath '| & sFol & |'|      ' 解凍先
   sCmd = sCmd & | -Force|        ' 上書き

   ' PowerShell の -Command で ZIP 解凍を実行するコマンド文字列を作成
   sPS = |powershell -Command "| & sCmd & |"|

   ' PowerShell を実行(ウィンドウ非表示、実行終了を待つ)
   Set oWSH = CreateObject("WScript.Shell")
   oWSH.Run sPS, 0, True

   ' 解凍先フォルダをエクスプローラで開く
   oWSH.Run |explorer.exe "| & sFol & |"|


0 件のコメント:

コメントを投稿