كيفية تحديد وقت انتهاء النسخ في VBScript؟
-
02-07-2019 - |
سؤال
هل يعرف أحد طريقة لتحديد وقت اكتمال نسخة الملف في 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
الرقم 2 في OpenTextFile هو ForWriting.
نصائح أخرى
قد يكون حظك أفضل باستخدام طريقة النسخ على ملف FileSystemObject
.لقد استخدمته للنسخ، وهو عبارة عن مكالمة حظر.
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
لا تنتمي إلى StackOverflow