2016-02-29 66 views
0

我需要一個VBScript來查找文件夾中最新的文件並對其進行重命名。我已經能夠編寫腳本,以便它找到最新的文件。但是,我無法弄清楚如何正確讓文件重新命名一次。我已經能夠用一個基本的名字重命名這個文件,確認這個腳本是可行的。重命名文件的一部分

文件名需要在中間添加字母「A」。

該文件已保存爲20160229_TITLES,需要變爲20160229A_TITLES

下面是我試圖拉一年並添加「A」的腳本。我想我是否可以讓年份增加到一開始,然後我可以在月份和年份中添加。日期將始終是當前日期。這繼續導致錯誤消息。

Option Explicit 

Dim fso, folder, file, Date, recentFile 
Dim folderName, searchFileName, renameFileTo 

folderName = "C:\Ticket\Test\" 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set folder = fso.GetFolder(folderName) 
Set recentFile = Nothing 

For Each file In folder.Files  
    If (recentFile is Nothing) Then 
     Set recentFile = file 
    ElseIf FormatDateTime(file.DateLastModified) = Date Then 
     Set recentFile = file 
    End If 
Next 

recentFile.Name = Replace(recentFile.Name, "_", "A_") 

回答

0

提供的答案@Ansgar幫助我正確地重命名文件,但是,我瞭解到,腳本只搜索的結果是任何文件比任何其他文件都新,並將其重新命名。以下腳本正確地重命名今天修改的文件。謝謝你的幫助@Ansgar。 :)

Option Explicit 

Dim fso, folder, file, todaysDate, recentFile 
Dim folderName, searchFileName, renameFileTo 

folderName  = "C:\Ticket\Test\" 
todaysDate  = Date() 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set folder = fso.GetFolder(folderName) 
set recentFile = Nothing 

For each file In folder.Files  
    If (recentFile is Nothing) Then 
      Set recentFile = file 
    ElseIf DateValue (file.DateLastModified) = todaysDate then 
      Set recentFile = file 
      Exit For 
    End IF 
Next 
recentFile.Name = Replace(recentFile.Name, "_", "A_") 
0

假設文件名總是包括日期緊跟一個下劃線和其他一些文字,你可以做幾件事情:

  • 與「A_」(替換下劃線如果只有一個在名稱中使用下劃線):

    file.Name = Replace(file.Name, "_", "A_") 
    
  • 在第一個下劃線分割的名字,「A」附加到所述第一片段,並加入片段重新在一起:

    arr = Split(file.Name, "_", 2) 
    arr(0) = arr(0) & "A" 
    file.Name = Join(arr, "_") 
    
  • 做一個正則表達式替換:

    Set re = New RegExp 
    re.Pattern = "^(\d{8})_" 
    file.Name = re.Replace(file.Name, "$1A_") 
    
+0

謝謝。我用你的第一個例子,並能夠重命名文件夾內的文件,但是,它現在正在更改文件夾中第二個最舊文件的文件名,而不是最新的。 你會碰巧知道爲什麼它不再重命名最近的文件嗎? 謝謝你的幫助。 – jodies

+0

從循環中刪除'Exit For'。您*必須*比較文件夾中的每個*文件。現在,循環將在第一個文件比文件夾中的第一個文件更新後退出。並重命名該文件。 –

+0

謝謝你的幫助。不幸的是,我似乎仍然無法得到它的工作。我刪除了'exit for',現在我在重命名代碼的行上出現錯誤。 錯誤:所需的對象:「 重命名工作正常之前,我刪除了‘’退出(除了它改名爲錯誤的文件) 也許我要對此錯誤的腳本的目的是找到。這個文件是今天保存的並且重新命名它,我不需要瀏覽所有其他的文件,我只需要找到今天的文件,你能提供幫助嗎?謝謝! – jodies