我正在尝试设计这个脚本,它应该被用作很多用户的登录脚本的一部分。此脚本基本上应该采用源文件夹和目标文件夹,因为基本上只需确保目标文件夹具有与源文件夹完全相同的内容。但只有在源文件的datemodified标记比目标文件更新时才复制。
我一直在考虑这个基本的伪代码,只是试图确保它基本上是有效和可靠的。
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 :(得分: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
编辑:拼错了网址。
<强>改进强> 在评论中,“date1”和“date2”已被交换。 MSDN文档说: 如果date1引用的时间晚于date2,则DateDiff函数返回负数。 http://msdn.microsoft.com/en-us/library/xhtyw595(v=vs.84).aspx
答案 1 :(得分:1)
您的代码看起来很合理。只要注意只读文件等。
您可以使用FileSystemObject
执行实际的文件操作,只需查看:
http://msdn.microsoft.com/en-us/library/6kxy1a51%28VS.85%29.aspx