2010-04-05 2 views
0

Проблемы с WSH и сжатием Windows.Использование VB6 + 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-файл заблокирован). I Невозможно понять, как WAIT, пока функция COPYHERE не завершит перед вызовом следующего, чтобы избежать проблем.

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

Спасибо -

+0

Является ли это Visual Basic или VBScript? (Visual Basic! = VBScript) – Helen

ответ

1

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

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

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

Helen работает на моем одноядерном ПК. На моем четырехъядерном процессоре это не так. Звучит странно? Все, что я могу сделать для этого (может быть, несколько ядер отбрасывают логику)? Благодарю. – OneNerd

+0

@OneNerd: Вы получаете ошибки Windows или ошибки времени выполнения VBScript? Если последнее, какая ошибка вы получаете, на какой строке и т. Д.? – Helen

+0

ну, это займет около 1 минуты для каждого файла, чтобы застегнуть молнию - это как его висит или что-то в этом роде. Не уверенный - я еще потрудился - дал вам проголосовать, и если я смогу заставить его работать, отметит, как принято. Благодарю. – OneNerd

Смежные вопросы