Vbscript 重命名文件的一部分
我需要一个VBScript,用于在文件夹中查找最近的文件并重命名它。我已经能够编写脚本,以便它找到最新的文件。但是,我不知道如何正确地将文件重命名。我已经能够用一个基本名称重命名该文件,确认脚本可以正常工作Vbscript 重命名文件的一部分,vbscript,rename,file-rename,Vbscript,Rename,File Rename,我需要一个VBScript,用于在文件夹中查找最近的文件并重命名它。我已经能够编写脚本,以便它找到最新的文件。但是,我不知道如何正确地将文件重命名。我已经能够用一个基本名称重命名该文件,确认脚本可以正常工作 文件名需要中间加上字母“A”。 该文件将已保存为20160229\u TITLES,需要变成20160229A\u TITLES 下面是一个脚本,我试着把这一年加上“a”。我想如果我能把年份加在开头,我就可以把月份和年份加在一起。该日期将始终为当前日期。这将继续导致错误消息 Option E
文件名需要中间加上字母“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_")
非常感谢。我使用了您的第一个示例,并且能够重命名文件夹中的文件,但是,它现在正在更改文件夹中第二个最旧文件的文件名,而不是最新文件的文件名。你知道为什么它不再重命名最近的文件吗?感谢您的帮助。请从循环中删除的退出。您必须比较文件夹中的每个文件。现在,循环将在比文件夹中的第一个文件更新的第一个文件之后退出。并重命名该文件。谢谢您的帮助。不幸的是,我似乎仍然无法让它工作。我删除了“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_")