【VBScript】zip圧縮ファイルの解凍部品


この記事はプロモーションを含みます。

VBScript

ホーム > VBScript 逆引きリファレンス

以前、zip形式の圧縮ファイルを解凍する方法をご紹介しました。
今回は、それを部品化して、別のVBScriptで実行する方法を解説したいと思います。

早速ソースコードになります。
構成は、「main.vbs」が実行するスクリプト、「function.vbs」は「main.vbs」から呼び出される関数をまとめたスクリプトとなります。

main.vbs

Option Explicit

' ファイルシステムオブジェクトの作成
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

' 関数の読み込み
Execute fso.OpenTextFile("function.vbs").ReadAll()

' 関数の呼び出し
Call unzip("C:\work\zipFolder.zip", cd)

' ファイルシステムオブジェクトの破棄
Set fso = Nothing

function.vbs

Option Explicit

' zipファイル解凍関数
Function unzip(src, dest)

	' Shellアプリケーションオブジェクトの作成
	Dim shell
	Set shell = CreateObject("Shell.Application")

	' ファイル、フォルダオブジェクトの作成
	Dim file, folder
	Set file = shell.NameSpace(src).items
	Set folder = shell.NameSpace(dest)

	' zipファイルの解凍
	folder.CopyHere file

	' Shellアプリケーションオブジェクトの破棄
	Set shell = Nothing

End Function

' カレントディレクトリ取得関数
Function cd()

	' WShellオブジェクトの作成
	Dim ws
	Set ws = CreateObject("WScript.Shell")

	' カレントディレクトリの取得
	cd = ws.CurrentDirectory

	' WShellオブジェクトの破棄
	Set ws = Nothing

End Function

使い方は「main.vbs」の「unzip」関数に引数として、「解凍対象のzipファイル」と「解凍先」を渡して呼び出しています。

「解凍先」に設定している「cd」ですが、これも「function.vbs」に定義している関数となっており、「main.vbs」が格納されているカレントディレクトリを返します。

なので、このスクリプトを実行すると、「C:\work\zipFolder.zip」をカレントディレクトリに解凍する処理が実行されます。

部品化することで、呼び出し側に1行記述するだけで、zipファイルの解凍やカレントディレクトリを取得できるようになりました。
今回は、簡単なものなので恩恵が少ない感じがしますが、プログラムが大きくなるにつれ、部品化の恩恵も大きくなると思います。

各機能についての解説は以下になります。
あわせて読んでいただくと、より理解が深まると思います。

コメント

タイトルとURLをコピーしました