使用字符串变量名比较两个不同文件夹中的文件

时间:2016-08-23 00:30:13

标签: vbscript string-comparison file-exists file-copying

由于我自动命名约定,文件以两种方式之一保存在特定存档中。它们与数据库中的记录具有13位匹配,或者它们具有10位数匹配。具有13位的那些具有十位匹配,并且应该优先处理。我现在有两个脚本可以正常工作:一个只查找13位数匹配并将它们移动到另一个文件夹。其他通过datemodified移动,这不是一个非常稳定的变量。

我尝试组合看起来像这样:

'dimming of obj, folder paths, sql db info and connection open above
SQL = "SELECT ticket FROM orders WHERE dateinvoice>'6/1/16"
Recordset.Open SQL, Connection

Do While Not Recordset.EOF
  ticket  = Recordset("ticket")
  id      = Right(ticket, 2)
  suffix  = CInt(id)
  compare = Left(ticket, Len(ticket) - 3)

  search  = compare & "-0" & suffix

  For Each objFile In colFiles.Files
    If Left(objFile.Name, 13) = search Then
    Set objNewestFile = objFile
      skip = 1
    Else
      skip = 0
    End If

    If Left(objFile.Name, 10) = search And skip = 0 Then
      Set objNewestFile = objFile
    End If
  Next

  Recordset.MoveNext

  On Error Resume Next
  objFSO.CopyFile objNewestFile.Path, strDestFolder

  Set objFile = Nothing
Loop

这是我回过头来的缩小版本,试图尝试各种复杂的解决方案,如:

  1. 将跳过的记录存储在数组中
  2. 通过比较folder1和folder2中的文件进行第二次循环(每次使用FileExists时,它似乎都无法识别目的地),
  3. 创建一个临时SQL表来存储跳过的记录。
  4. 以下内容非常有用:

    ETA:可以有许多共享10位数标识符的重复文件。唯一的好规则是:如果它有13个标识符版本,那么 要移动的那个。如果我使用FileExists,我的部分问题在于设置路径 - 当我尝试使用通配符时,它不会识别路径。如果我不使用它们,它就不会补偿所有变量。

0 个答案:

没有答案