سؤال

هل يعرف أحد طريقة لتحديد وقت اكتمال نسخة الملف في 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top