交叉检查两个文件夹中的文件

时间:2015-05-07 02:28:52

标签: vbscript match filenames

我有两个文件夹:主文件夹&新建文件夹。两个文件夹中的文件共享相同的文件名。我需要交叉检查这两个文件夹之间的文件。

  • 如果主文件夹没有该文件,我将从新文件夹中导入。
  • 如果Master文件夹中有文件,我会将主文件附加到新文件中。

使用下面的代码,我可以附加数据。但它无法导入文件。该脚本不显示任何错误消息。我只是不知道出了什么问题。

On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set SrcFolder = fso.GetFolder("C:\Users\Vault Keeper\Desktop\NewFile")
DestFolder = "C:\Users\Vault Keeper\Desktop\MasterFile"

For Each NewFile in SrcFolder.files
    If fso.FileExists(DestFolder & "\" & NewFile.name) Then
        txt = NewFile.OpenAsTextStream(1).ReadAll
        Set MasterFile = FSO.OpenTextFile(DestFolder & "\" & NewFile.name, 8)
        MasterFile.Write txt
    Else
        fso.CopyFile "C:\Users\Vault Keeper\Desktop\NewFile" & "\" & NewFile.name, _
            DestFolder
    End If
Next

2 个答案:

答案 0 :(得分:1)

当你告诉你的剧本关闭任何错误(On Error Resume Next)时,你不知道出了什么问题,这并不奇怪。删除该行(无论如何使用全局OERN是一种可怕的做法),看看你得到了什么错误。

错误很可能是"权限被拒绝",因为您正在尝试将文件复制到现有目标文件夹,而该路径没有以反斜杠结尾:

DestFolder = "C:\Users\Vault Keeper\Desktop\MasterFile"   '<-- no trailing backslash
...
fso.CopyFile "C:\Users\Vault Keeper\Desktop\NewFile" & "\" & NewFile.name, DestFolder

引用documentation

  

如果 source 包含通配符或 destination 以路径分隔符()结尾,则假定 destination 是一个现有文件夹,其中复制匹配的文件。否则, destination 将被假定为要创建的文件的名称。在任何一种情况下,复制单个文件时都会发生三件事。

     
      
  • 如果 destination 不存在,则会复制 source 。这是通常的情况。
  •   
  • 如果 destination 是现有文件,则覆盖 false 时会发生错误。否则,将尝试将 source 复制到现有文件上。
  •   
  • 如果 destination 是目录,则会发生错误。
  •   

在目标路径上附加一个反斜杠,错误应该消失。此外,由于您已有File个对象,我建议您使用Copy方法,而不是CopyFile

NewFile.Copy DestFolder & "\"

答案 1 :(得分:0)

您可以使用此

检查文件
Dim objFSO As Scripting.FileSystemObject

If objFSO Is Nothing Then Set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(fileNameAndPath) Then
    'code here...
End If