以前、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ファイルの解凍やカレントディレクトリを取得できるようになりました。
今回は、簡単なものなので恩恵が少ない感じがしますが、プログラムが大きくなるにつれ、部品化の恩恵も大きくなると思います。
各機能についての解説は以下になります。
あわせて読んでいただくと、より理解が深まると思います。
コメント