重命名文件的一部分

Rename part of file

我需要一个 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_")

假设文件名总是由日期后跟下划线和一些其他文本组成,您可以做几件事:

  • 将下划线替换为"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, "A_")
    

@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_")