2010-05-14 23 views
2

我試圖設計這個腳本,該腳本應該用作很多用戶的登錄腳本的一部分。這個腳本基本上應該採取一個源文件夾和目標文件夾,基本上只是確保目標文件夾與源文件夾具有完全相同的內容。但只有在源文件的日期修改標記比目標文件更新時才能複製。Vbscript - 如果比目標文件更新,比較和複製文件夾中的文件

我一直在想這個基本的僞代碼,只是試圖確保這是有效的和堅實的基本。

Dim strSourceFolder, strDestFolder 
strSourceFolder = "C:\Users\User\SourceFolder\" 
strDestFolder = "C:\Users\User\DestFolder\" 

For each file in StrSourceFolder 
    ReplaceIfNewer (file, strDestFolder) 
Next 

Sub ReplaceIfNewer (SourceFile, DestFolder) 

    Dim DateModifiedSourceFile, DateModifiedDestFile 
    DateModifiedSourceFile = SourceFile.DateModified() 
    DateModifiedDestFile = DestFolder & "\" & SourceFile.DateModified() 

    If DateModifiedSourceFile < DateModifiedDestFile 
     Copy SourceFile to SourceFolder 
    End if 

End Sub 

這項工作?我不太確定如何做,但我可能花一整天的時間搞清楚。但是這裏的人通常非常聰明,以至於在你的幫助下會花更少的時間:)

+0

如果目標文件丟失怎麼辦? – Fionnuala 2010-05-14 09:01:46

回答

2

你的算法看起來不錯。實際上,您需要使用FileSystemObject獲取文件,並檢索它們各自的DateLastModified屬性。你可以在兩個日期做一個DateDiff來比較哪個更早。

DevGuru稍微變形例:

Dim filesys,demofile, date1, date2 
Set filesys = CreateObject("Scripting.FileSystemObject") 
Set demofile = filesys.GetFile("filename1") 
date1 = demofile.DateLastModified 
demofile = filesys.GetFile("filename2") 
date2 = demofile.DateLastModified 

If DateDiff("d", date1, date2) > 0 Then 
    'date2 is more recent than date1, comparison by "day" ' ** Improvement ** 
End If 

編輯:拼寫錯誤的URL。


改進 在評論, 「日期1」 和 「日期2」 進行了交流。 MSDN文檔說: 如果date1引用的時間晚於date2,則DateDiff函數將返回負數。 http://msdn.microsoft.com/en-us/library/xhtyw595(v=vs.84).aspx

+0

這看起來很有前途:)我會試試看:) – 2010-05-14 08:32:06