2013-07-11 201 views
-1

我有一個要求,我真的不知道如何去做。我需要編寫一個VBScript來查找指定目錄中的某些文件。如果找到該文件,則需要將其移至不同的目錄(存檔)。如何將文件從一個目錄移動到另一個目錄?

例如,我在目錄C:\ Transfer中有文件Z001_130711.txt,文件名的前四個字符總是相同的,會改變的是最後6個字符,你可以看到的是日期該文件已創建/運行。

在我移動文件之前,我必須做一些其他的事情,爲此我已經提出了VBScript代碼。

完成後我需要將它移動到C:\ Transfer \ Archive。這是我卡住的地方,我不知道該怎麼做。

任何幫助將非常感激。

+0

如果你想使用VBScript你爲什麼用VB.NET標記這個問題? – Steve

+1

如果你不知道確切的名字,你如何識別該文件?是否總是隻有一個名爲'Z001_ *'的文件?另外,您可能需要檢查['FileSystemObject'文檔](http://msdn.microsoft.com/zh-cn/library/6tkce7xa%28v=vs.84%29.aspx)。 –

回答

0

這應該會讓你獲得最好的效果。您需要找出短語「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 
相關問題