2010-04-05 6 views
0

WSH 및 Windows 압축에 문제가 있습니다.Windows 압축에서 VB6 + WSH 사용

나의 목표는 내장 된 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 함수가을 완료 할 때까지 기다리는 방법을 알아내는 것처럼 보입니다.

아무도이 경험이 있습니까?

감사합니다 -

+0

이 Visual Basic 또는 VBScript입니까? (Visual Basic! = VBScript) – Helen

답변

1

당신은 (here 제안 및 here로) 다음 루프 반복을 진행하기 전에 대상 ZIP 폴더에있는 파일 수를 확인하여 동기화의 종류를 달성 할 수 있어야한다 :

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

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

헬렌은 내 싱글 코어 PC에서 작동합니다. 내 쿼드 코어에서는 그렇지 않습니다. 이상하게 들리는가요? 내가 할 수있는 일은 무엇이든간에 (아마도 멀티 코어가 로직을 버리는 것일까?) 감사. – OneNerd

+0

@OneNerd : Windows 오류 또는 VBScript 런타임 오류가 발생합니까? 후자의 경우, 어떤 오류가 발생합니까? – Helen

+0

글쎄, 각 파일에 대해 약 1 분 정도 소요됩니다 - 교수형 등. 확실하지 않다 - 좀 더 고치겠다 - 투표를하고, 내가 일할 수 있다면 받아 들일 수있다. 감사. – OneNerd

관련 문제