问题描述
示例:
使用数字约定将名称更改为特定名称,例如将Part1.csv更改为31-AUG-20-1.csv,将Part2.csv更改为31-Aug-29-2.csv
此处20年8月31日将保持不变,但数字递增。因此,在下面的代码中,我不想针对每个文件使用新名称,即31-Aug-20-1.csv,而是应该将其更改为20-Aug-20(增量编号)
private volatile String string = "old";
public String getAndSet() {
String old = string;
string = "new";
return old;
}
解决方法
此代码将使用递增编号重命名文件:
Dim iCounter
Dim folderName
Dim fso,folder,file
' Path
folderName = "C:\User\desktop\ATL\"
' Create filesystem object and the folder object
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderName)
iCounter = 1
For Each file In folder.Files
file.Name = "ATL-32-Aug-20-" & iCounter & ".csv"
iCounter = iCounter + 1
Next
如果要保留原始文件名(Part#.csv)中的数字,则可以添加以下逻辑:
Const vbTextCompare = 1
Dim folderName
Dim fso,file
Dim sNumber
Dim sPrefix
' Path and prefix
folderName = "C:\User\desktop\ATL\"
sPrefix = "ATL-32-Aug-20-"
' Create filesystem object and the folder object
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderName)
For Each file In folder.Files
' Check for "Part" and ".csv" in file name
If StrComp(Left(file.Name,4),"Part",vbTextCompare) = 0 And StrComp(Right(file.Name,".csv",vbTextCompare) = 0 Then
' Extract number
sNumber = Mid(file.Name,5,Len(file.Name) - 8)
' Rename file
file.Name = sPrefix & sNumber & ".csv"
End If
Next