Wie zu bestimmen, wann Kopie in VBScript beendet?
-
02-07-2019 - |
Frage
Kennt jemand eine Methode, um zu bestimmen, wenn eine Dateikopie in VBScript abgeschlossen? Ich verwende den folgenden zu kopieren:
set sa = CreateObject("Shell.Application")
set zip = sa.NameSpace(saveFile)
set Fol = sa.NameSpace(folderToZip)
zip.copyHere (Fol.items)
Lösung
Do Until zip.Items.Count = Fol.Items.Count
WScript.Sleep 300
Loop
Wenn die Schleife beendet Ihre Kopie beendet ist.
Aber wenn Sie kopieren möchten, und nicht zip, FSO oder WMI ist besser.
Wenn Sie zippen und wollen, dass sie in einer Datei haben Sie die Zip-Datei selbst, mit dem rechten Kopf zuerst zu erstellen. Else nur Sie komprimierte Dateien / Ordner IIRC erhalten. So etwas wie folgt aus:
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
Die 2 in Opentextfile ist ForWriting.
Andere Tipps
Sie können besser haben Glück die Copy-Methode auf einem FileSystemObject
. Ich habe es für das Kopieren verwendet wird, und es ist ein blockierender Aufruf.
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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow