比较两个不同文件夹中的两个文件,并将其替换为较新的文件夹

时间:2015-05-29 13:03:37

标签: vbscript

使用此VBScript代码,我能够复制文件。如果该文件存在则不执行任何操作,否则将复制所需的文件。

Dim Photo
SourceFolder = "C:\Photo1"
DistinationFolder = "C:\Photo2"
Set ObjPhoto = CreateObject("Scripting.FileSystemObject")

For Each Photo In ObjPhoto.GetFolder( SourceFolder).Files
    If Not ObjPhoto.FileExists(ObjPhoto.BuildPath(DistinationFolder, Replace(Photo.Name, ".jpg", ".bmp"))) Then
        photo.Copy ObjPhoto.BuildPath(DistinationFolder, Photo.Name), True
    End If
Next

如果源文件也存在于目标文件夹中,我想比较这些文件,并将其替换为较新的文件。

1 个答案:

答案 0 :(得分:1)

如果要根据上次修改日期覆盖,则File对象具有您想要的属性:DateLastModified。 (您可以检查File对象here的所有属性。)

您已经可以访问源文件对象(您的代码的Photo变量),因此您只需要获取目标文件对象。

这样的事情应该有效:

Dim Photo
Dim targetFile, bmpTargetFilename, jpgTargetFilename

SourceFolder = "C:\Photo1"
DistinationFolder = "C:\Photo2"

Set ObjPhoto = CreateObject("Scripting.FileSystemObject")

For Each Photo In ObjPhoto.GetFolder(SourceFolder).Files
    bmpTargetFilename = ObjPhoto.BuildPath(DistinationFolder, Replace(Photo.Name, ".jpg", ".bmp"))
    jpgTargetFilename = ObjPhoto.BuildPath(DistinationFolder, Photo.Name)

    If ObjPhoto.FileExists(bmpTargetFilename) Then
        ' Get the target file object
        Set targetFile = ObjPhoto.GetFile(jpgTargetFilename)
        ' Now compare the last modified dates of both files
        If Photo.DateLastModified > targetFile.DateLastModified Then
            Photo.Copy jpgTargetFilename, True
        End If
    Else
        Photo.Copy jpgTargetFilename, True
    End If
Next

几点说明:

  • 您似乎正在检查是否存在.BMP文件但是正在复制.JPG文件,所以我通过使用两个变量使其明确。
  • 我还假设你要比较JPG文件,因为那些是被复制的文件。