重命名文件的一部分
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_")
我需要一个 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_")