- Файловая система
- Регулярные выражения
- Базы данных
- Двоичные данные
- Полезные функции

Zip-архивы.
Начиная с версии XP ОС Windows имеет встроенную поддержку работы с zip-архивами. Windows Explorer позволяет выполнять базовые операции сжатия/извлечения файлов. Для работы c zip-архивами в vbs-скриптах используется объект IShellDispatch, предоставляющий метод .NameSpace(), возвращающий объект виртуальной папки.
Для получения файлов из архива используется процедура ExtractFileFromZipArchive:
Sub ExtractFileFromZipArchive(targetFolderPath, zipFilePath, extractingFileName)
Set shell = CreateObject("Shell.Application")
Set extractingFolder = shell.NameSpace(targetFolderPath)
WScript.Echo "File(s) " & Chr(34) & zipFilePath & "\" & extractingFileName & Chr(34) & " is extracting.."
Call extractingFolder.CopyHere(zipFilePath & "\" & extractingFileName, Int("&h1FFF"))'1FFF - битовые флаги
WScript.Echo "Extracting is complete."
End Sub
Процедура ExtractEntireZipArchive распаковывает весь архив в указанную папку, используя процедуру ExtractFileFromZipArchive и предварительно проверяя наличие указанного архива и целевого каталога.
Sub ExtractEntireZipArchive(zipFilePath, targetFolderPath)
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(zipFilePath) Then'существует ли указанный архив
If fso.FolderExists(targetFolderPath) Then'существует ли указанная целевая директория
Set zipFile = fso.getFile(zipFilePath)
extLen = Len(fso.GetExtensionName(zipFile)) + 1'
'получить имя архива
extractingFolderPath = targetFolderPath & "\" & Left(zipFile.Name, Len(zipFile.Name) - extLen)
If Not fso.FolderExists(extractingFolderPath) Then'существует ли директория с таким именем
Set extractingFolder = fso.CreateFolder(extractingFolderPath)
Call ExtractFileFromZipArchive(extractingFolder.Path, zipFile.Path, "*.*")'распаковать
Else'ошибка
WScript.Echo "Folder " & Chr(34) & extractingFolderPath & Chr(34) & " already exists"
End If
Else'ошибка
WScript.Echo "Folder " & Chr(34) & targetFolderPath & Chr(34) & " was not found"
End If
Else'ошибка
WScript.Echo "File " & Chr(34) & zipFilePath & Chr(34) & " was not found"
End If
End Sub
Пример:
Call ExtractEntireZipArchive("archive.zip", ".")'распаковать архив в текущую папку