VBScriptでZIP圧縮
ここではVBScriptでファイルをZIP圧縮する方法を解説します。
ZIP圧縮を行うサンプルコード
Dim inputDir Dim zipFileName Dim fso Dim fileObj Dim shellObj Dim sourceFiles ' 圧縮対象のファイルが入ったディレクトリ inputDir = "tmp" ' ZIPファイル名 zipFileName = "test.zip" ' FileSystemObjectの作成 Set fso = CreateObject("Scripting.FileSystemObject") ' ZIPファイルのオープン Set fileObj = fso.CreateTextFile(zipFileName, True) ' ヘッダの書き込み fileObj.Write(Chr(80) & Chr(75) &Chr(5) & Chr(6) & String(18, 0)) fileObj.Close Set shellObj = CreateObject("Shell.Application") ' 対象ファイル群を取得 Set sourceFiles = shellObj.NameSpace(inputDir).Items ' ZIPファイルに追加 shellObj.NameSpace(zipFileName).CopyHere(sourceFiles) ' 追加するまでウェイト WScript.Sleep 3000
サンプルコードを細かく見ていきましょう。
まず、FileSystemObjectを作成し、CreateTextFileメソッドでファイルを開きます。
CreateTextFileの書式は以下になります。
CreateTextFile(filename[, overwrite[, unicode]])
filenameは必須指定。作成するファイル名を指定します。
overwriteは省略可。既存ファイルの場合に上書きするかどうかをブール値で指定します。
unicodeは省略可。Unicode ファイルと ASCII ファイルのどちらを作成するかをブール値を指定します。
次にファイルにZIPファイルを表すヘッダ情報を書き込みます。
' ヘッダの書き込み fileObj.Write(Chr(80) & Chr(75) &Chr(5) & Chr(6) & String(18, 0)) fileObj.Close
最後に対象のファイル群を取得して、CopyHereメソッドを使用してZIPファイルに追加します。
Set shellObj = CreateObject("Shell.Application") ' 対象ファイル群を取得 Set sourceFiles = shellObj.NameSpace(inputDir).Items ' ZIPファイルに追加 shellObj.NameSpace(zipFileName).CopyHere(sourceFiles) ' 追加するまでウェイト WScript.Sleep 3000