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

Vbscript 比较两个不同文件夹中的两个文件,并将其替换为较新的文件,vbscript,Vbscript,使用这个VBScript代码,我可以复制文件。如果文件存在,它将不执行任何操作,如果不存在,它将复制所需的文件 Dim Photo SourceFolder = "C:\Photo1" DistinationFolder = "C:\Photo2" Set ObjPhoto = CreateObject("Scripting.FileSystemObject") For Each Photo In ObjPhoto.GetFolder( SourceFolder).Files If N

使用这个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

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

如果要基于上次修改的日期进行覆盖,则
文件
对象具有所需的属性:
DateLastModified
。(您可以检查
文件
对象的所有属性。)

您已经可以访问源文件对象(代码的
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文件,因为这些是被复制的文件

访问以下论坛,希望这会有所帮助:@nater303请避免发表“谢谢”的评论。如果你发现它解决了你的问题。