VBScriptでZIPファイルを解凍する

ZIPファイルをスクリプトに直接ドロップして解凍する。


'カレントにフォルダを作って解凍します

'オブジェクトを作ります
set fso = WScript.CreateObject("Scripting.FileSystemObject")

'とりあえず解凍する対象は一つだけにします。
If WScript.Arguments.Count < 1 Then
WScript.Echo("ファイルをドロップしてくだせぇ")
WScript.Quit
ElseIf WScript.Arguments.Count > 1 Then
WScript.Echo("1個にしてください・・・")
WScript.Quit
End If
File = WScript.Arguments(0)

If LCase(fso.GetExtensionName(File)) <> "zip" Then
WScript.Echo("ZIP形式のみ解凍できます!")
WScript.Quit()
End If

'フォルダの名前を決めます
ExtractFolder = fso.GetParentFolderName(File) & "\" & fso.GetBaseName(File)

'なかったら作ります
If Not fso.FolderExists(ExtractFolder) Then
fso.CreateFolder(ExtractFolder)
End If

'解凍!
With CreateObject("Shell.Application")
.NameSpace(ExtractFolder).CopyHere .NameSpace(File).Items
End With

適当にファイル作って上をコピペ。拡張子を.vbsで保存。
できた.vbsファイルにZIPをドロップするとZIPと同名のフォルダが、
ZIPと同じ階層に作られその中にファイルが展開される。

参考
http://d.hatena.ne.jp/Fio/20080916/p1



Shell.Applicationは解凍時に一時ファイルを残すそうです。
Explorerは残さないようです。残さない場合のスクリプトは以下のページを参照してください。

Windows Script Programming: VBAでZIP展開する。