Vbscript 重命名文件的一部分

Vbscript 重命名文件的一部分,vbscript,rename,file-rename,Vbscript,Rename,File Rename,我需要一个VBScript,用于在文件夹中查找最近的文件并重命名它。我已经能够编写脚本,以便它找到最新的文件。但是,我不知道如何正确地将文件重命名。我已经能够用一个基本名称重命名该文件,确认脚本可以正常工作 文件名需要中间加上字母“A”。 该文件将已保存为20160229\u TITLES,需要变成20160229A\u TITLES 下面是一个脚本,我试着把这一年加上“a”。我想如果我能把年份加在开头,我就可以把月份和年份加在一起。该日期将始终为当前日期。这将继续导致错误消息 Option E

我需要一个VBScript,用于在文件夹中查找最近的文件并重命名它。我已经能够编写脚本,以便它找到最新的文件。但是,我不知道如何正确地将文件重命名。我已经能够用一个基本名称重命名该文件,确认脚本可以正常工作

文件名需要中间加上字母“A”。

该文件将已保存为
20160229\u TITLES
,需要变成
20160229A\u 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”(如果名称中只有一个下划线):

  • 在第一个下划线处拆分名称,将“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_")
    

Ansgar提供的答案帮助我正确地重命名了文件,但是,我了解到脚本只搜索比任何其他文件更新的任何文件并重命名了它。以下脚本正确重命名了今天修改的文件。感谢您的帮助@Ansgar.:)


非常感谢。我使用了您的第一个示例,并且能够重命名文件夹中的文件,但是,它现在正在更改文件夹中第二个最旧文件的文件名,而不是最新文件的文件名。你知道为什么它不再重命名最近的文件吗?感谢您的帮助。请从循环中删除的退出。您必须比较文件夹中的每个文件。现在,循环将在比文件夹中的第一个文件更新的第一个文件之后退出。并重命名该文件。谢谢您的帮助。不幸的是,我似乎仍然无法让它工作。我删除了“exit for”,现在在重命名代码的行上出现了一个错误。错误:需要对象:“在我删除“退出”之前,重命名工作正常(除了重命名了错误的文件)可能是我搞错了。脚本的目的是找到今天保存的文件并对其重命名。我不需要查看所有其他文件,我只需要找到今天的文件。您能提供帮助吗?谢谢!@jodies
recentFile.Name=Replace(recentFile.Name,“\u”,“A”)
谢谢。名称更改现在非常有效。我对脚本进行了更改,以便在找到今天修改的文件后,它将对其进行重命名。但是,脚本重命名文件夹中最旧的文件,而不是最新的文件。我缺少什么,以便它找到今天修改的一个文件?我非常感谢!我是新的学习和珍惜你的时间。
Set re = New RegExp
re.Pattern = "^(\d{8})_"
file.Name = re.Replace(file.Name, "$1A_")
 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_")