我有一个要求,我不确定如何去做。我需要编写一个VBScript来查找指定目录中的某些文件。如果找到该文件,则需要将其移动到另一个目录(存档)。
例如,我在目录C:\ Transfer中有文件Z001_130711.txt,文件名的前四个字符将始终与最后6个字符相同,后者可以看到的是日期文件已创建/运行。
在我移动文件之前,我必须做一些其他事情,为此我已经提出了VBScript代码。
完成后我需要将其移动到C:\ Transfer \ Archive。这就是我被困住的地方,我不知道该怎么办。
任何帮助都将非常感激。
答案 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