Использование VB6 + WSH со сжатием Windows - PullRequest
0 голосов
/ 05 апреля 2010

Проблемы с WSH и сжатием Windows.

Моя цель - иметь возможность архивировать файлы (не папки, а отдельные файлы из разных мест, которые я сохранил в массиве), используя встроенное сжатие Windows. Я использую VB6.

Вот моя рутина (код vb6):

Dim objShell
Dim objFolder
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.namespace(savePath & "\export.zip")
' --
' loop through array holding files to zip
For i = 0 To filePointer
  objFolder.CopyHere (filesToZip(i))
Next
' --
Set objShell = Nothing
Set objFolder = Nothing

Работает, но проблемы возникают при наличии нескольких файлов. Я начинаю получать ошибки из Windows (предположительно, слишком быстро вызывается сжатие, и zip-файл заблокирован). Кажется, я не могу понять, как ЖДАТЬ, пока функция COPYHERE не завершит перед вызовом следующей, чтобы избежать проблем.

У кого-нибудь есть опыт с этим?

Спасибо -

1 Ответ

1 голос
/ 05 апреля 2010

Вы сможете добиться такой синхронизации, проверив количество файлов в целевой папке ZIP, прежде чем переходить к следующей итерации цикла (как предлагается здесь и здесь ):

For i = 0 To filePointer
  objFolder.CopyHere filesToZip(i)

  Do Until objFolder.Items.Count = i+1
    WScript.Sleep 100
  Loop
Next
...