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


inserted by FC2 system