如何在VBScript中确定复制何时完成?

如何在VBScript中确定复制何时完成?,vbscript,copy,filesystems,Vbscript,Copy,Filesystems,有人知道用VBScript确定文件复制何时完成的方法吗?我正在使用以下内容进行复制: set sa = CreateObject("Shell.Application") set zip = sa.NameSpace(saveFile) set Fol = sa.NameSpace(folderToZip) zip.copyHere (Fol.items) 您可能会有更好的运气,使用复制方法对一个。我用它来拷贝,这是一个阻塞调用 Do Until zip.Items.Count =

有人知道用VBScript确定文件复制何时完成的方法吗?我正在使用以下内容进行复制:

set sa = CreateObject("Shell.Application")  
set zip = sa.NameSpace(saveFile)  
set Fol = sa.NameSpace(folderToZip)  
zip.copyHere (Fol.items)

您可能会有更好的运气,使用复制方法对一个。我用它来拷贝,这是一个阻塞调用

Do Until zip.Items.Count = Fol.Items.Count
    WScript.Sleep 300
Loop
循环完成后,您的副本完成

但如果您只想复制而不想压缩,那么FSO或WMI会更好

如果您正在压缩并希望它们出现在文件中,那么您必须自己创建压缩文件,首先使用正确的头。否则你只能得到压缩文件/文件夹IIRC。大概是这样的:

Set FSO = CreateObject( "Scripting.FileSystemObject" )
Set File = FSO.OpenTextFile( saveFile, 2, True )
File.Write "PK" & Chr(5) & Chr(6) & String( 18, Chr(0) )
File.Close
Set File = Nothing
Set FSO = Nothing

OpenTextFile中的2用于写入。

可能正在压缩,因此不使用FSO
Const FOF_CREATEPROGRESSDLG = &H0&
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Set fso = CreateObject("Scripting.FileSystemObject")

strSource = " " ' Source folder path of log files
strTarget = " .zip" ' backup path where file will be created

AddFilesToZip strSource,strTarget

Function AddFilesToZip (strSource,strTarget)
Set r=fso.GetFolder(strSource)
    set file = fso.opentextfile(strTarget,ForWriting,true) 
    file.write "PK" & chr(5) & chr(6) & string(18,chr(0)) 
    file.Close
    Set shl = CreateObject("Shell.Application")
    i = 0

        For each f in r.Files
            If fso.GetExtensionName(f) = "log" Or fso.GetExtensionName(f) = "Log" Or fso.GetExtensionName(f) = "LOG" Then
            shl.namespace(strTarget).copyhere(f.Path)', FOF_CREATEPROGRESSDLG   
                Do until shl.namespace(strTarget).items.count = i
                    wscript.sleep 300
                Loop
            End If
            i = i + 1
        Next

        set shl = Nothing
End Function