這應該會讓你獲得最好的效果。您需要找出短語「If UCase(Right(objFile.Name,4))=」.VBP「」的正確替代方法。然後,「
此外,目標文件還附加了」.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
如果你想使用VBScript你爲什麼用VB.NET標記這個問題? – Steve
如果你不知道確切的名字,你如何識別該文件?是否總是隻有一個名爲'Z001_ *'的文件?另外,您可能需要檢查['FileSystemObject'文檔](http://msdn.microsoft.com/zh-cn/library/6tkce7xa%28v=vs.84%29.aspx)。 –