2010年11月09日

VBScriptでZIPファイル解凍


Dim ZipFile, ExtractTo, fso, objShell, FilesInZip, objFolder

Const FOF_SILENT = &H04 '進捗ダイアログを表示しない。
Const FOF_RENAMEONCOLLISION = &H08 'ファイルやフォルダ名が重複するときは「コピー 〜 」のようなファイル名にリネームする。
Const FOF_NOCONFIRMATION = &H10 '上書き確認ダイアログを表示しない([すべて上書き]と同じ)。
Const FOF_ALLOWUNDO = &H40 '操作の取り消し([編集]-[元に戻す]や{ctrl}+{z})を有効にする。
Const FOF_FILESONLY = &H80 'ワイルドカードが指定された場合のみ実行する。
Const FOF_SIMPLEPROGRESS = &H100 '進捗ダイアログは表示するがファイル名は表示しない。
Const FOF_NOCONFIRMMKDIR = &H200 'フォルダ作成確認ダイアログを表示しない(自動で作成)。
Const FOF_NOERRORUI = &H400 'コピーや移動ができなかった場合の実行時エラーを発生させない。
'ただし、対象のファイルを飛ばして処理を続けるわけではないことに注意。
Const FOF_NORECURSION = &H1000 'サブフォルダ内のファイルはコピーしない(ただし、フォルダは作成される)。

'ZIPファイル
ZipFile = "C:\Users\test\Desktop\test.zip"
'解凍先
ExtractTo = "C:\Users\test\Desktop\"

'解凍先のフォルダが無い場合は作成する
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(ExtractTo) Then
fso.CreateFolder(ExtractTo)
End If

'ZIPファイルを解凍して、全てのファイルを解凍先フォルダにコピーする。
Set objShell = CreateObject("Shell.Application")
Set FilesInZip = objShell.NameSpace(ZipFile).items
Set objFolder = objShell.NameSpace(ExtractTo)
If (Not objFolder Is Nothing) Then
objFolder.CopyHere FilesInZip, FOF_NOCONFIRMATION + FOF_SILENT
End If

'オブジェクトの破棄
Set fso = Nothing
Set objFolder = Nothing
Set FilesInZip = Nothing
Set objShell = Nothing
posted by rururu at 01:56| Comment(0) | TrackBack(0) | VBScript
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/41647067
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック