How to determine when copying ends in VBScript?

Does anyone know of a method for determining when a copy of a file completes in VBScript? I use the following for copying:

set sa = CreateObject("Shell.Application") set zip = sa.NameSpace(saveFile) set Fol = sa.NameSpace(folderToZip) zip.copyHere (Fol.items) 
+4
source share
3 answers
 Do Until zip.Items.Count = Fol.Items.Count WScript.Sleep 300 Loop 

When the circuit is complete, your copy is complete.

But if you only want to copy, not ZIP, FSO or WMI is better.

If you are looping and want them in the file, you need to create the zip file yourself, first in the right header. In addition, you only get IIRC compressed files / folders. Something like that:

 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 

2 in OpenTextFile is ForWriting.

+6
source

You may be able to use the Copy method on FileSystemObject . I used it to copy, and this is a blocking call.

+2
source
 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 
0
source

Source: https://habr.com/ru/post/1277294/


All Articles