如何将文件从一个目录移动到另一个目录?

时间:2013-07-11 18:05:19

标签: scripting vbscript

我有一个要求,我不确定如何去做。我需要编写一个VBScript来查找指定目录中的某些文件。如果找到该文件,则需要将其移动到另一个目录(存档)。

例如,我在目录C:\ Transfer中有文件Z001_130711.txt,文件名的前四个字符将始终与最后6个字符相同,后者可以看到的是日期文件已创建/运行。

在我移动文件之前,我必须做一些其他事情,为此我已经提出了VBScript代码。

完成后我需要将其移动到C:\ Transfer \ Archive。这就是我被困住的地方,我不知道该怎么办。

任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

这应该可以帮到你。您需要找出正确的替换短语“If UCase(Right(objFile.Name,4))=”。VBP“Then”

此外,目标文件还附加了“.bak”。你需要删除它。

将文件列表放在字典中的理由让我目前无法理解。我认为这与流程失败的原因有关,我需要能够获得处理的文件列表与未处理的文件列表。

Option Explicit

Dim dicFiles 
Set dicFiles = CreateObject("Scripting.Dictionary")

Private Sub AddFile(objFile)
  If dicFiles Is Nothing Then
    Set dicFiles = CreateObject("Scripting.Dictionary")
  End If
  If Not dicFiles.Exists(objFile.Path) Then
    dicFiles.Add objFile.Path, "False"
  End If
End Sub

  Dim strRootPath 'As String
  Dim objFSO 'As New FileSystemObject
  Dim objFile 'As File
  Dim i 'As Integer
  Dim iMax 'as integer

  strRootPath = "C:\Transfer"
  Dim objFolder' As Folder
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFolder = objFSO.GetFolder(strRootPath)

  'MsgBox "" & objFolder.Files.Count & " files in folder " & objFolder.Path
  For Each objFile In objFolder.Files
    'MsgBox "Filespec: " & objFile.Name
    If UCase(Right(objFile.Name, 4)) = ".VBP" Then 
      'MsgBox "Adding file " & objFile.Name
      AddFile objFile
    End If
  Next

  Dim arrFiles '() As Variant
  arrFiles = dicFiles.Keys

  'MsgBox "UBound(arrfiles)=" & UBound(arrFiles)

  Dim fsIn 'As String
  Dim fsOut 'As String
  Dim strFilespec 'As String
  For i = 0 To UBound(arrFiles)
    Set objFile = objFSO.GetFile(arrFiles(i))
    strFilespec = arrFiles(i)
    fsOut = strFilespec & ".bak"
    If objFSO.FileExists(fsOut) Then
      objFSO.DeleteFile fsOut, True  'True = Force
    End If

    fsIn = strFilespec
    objFSO.MoveFile fsIn, fsOut

  Next

  Set objFSO = Nothing