如果已经存在具有相同名称的文件夹,是否有办法动态更改新文件夹名称?例如,如果我使用fso.CreateFolder
创建新文件,脚本是否有任何方法可以检查文件夹并添加额外的字符,例如从(“example”)到(“example a”) )。我意识到我可以使用变量中的文件名并添加如下字符:
dim filename
filename = ("example")
folderexists = fso.FolderExists(filename)
if (folderexists) then
fso.CreateFolder(filename + "a")
else
fso.CreateFolder(filename)
endif
但这只会工作一次,之后就会继续创建并覆盖(filename +“a”)。我希望脚本能够检测到,例如:
first folder = (filename)
second folder = (filename + "a")
Third folder = (filename + "aa")
fourth folder = (filename + "aaa")
等等。
答案 0 :(得分:1)
这样的事情应该做你想做的事情:
i = 0
If fso.FolderExists(filename) Then
Do
i = i + 1
newname = filename & String(i, "a")
Loop While fso.FolderExists(newname)
filename = newname
End If
fso.CreateFolder(filename)
就个人而言,我更喜欢数字后缀而不是长度增加的字符串:
i = -1
If fso.FolderExists(filename) Then
Do
i = i + 1
newname = filename & Right("000" & i, 3)
Loop While fso.FolderExists(newname)
filename = newname
End If
fso.CreateFolder(filename)
或者您可以在问题的评论中附加@Noodles建议的时间戳:
Function LPad(n) : LPad = Right("00" & n, 2) : End Function
timestamp = Year(Now) & LPad(Month(Now)) & LPad(Day(Now)) & LPad(Hour(Now)) & _
LPad(Minute(Now)) & LPad(Second(Now))
fso.CreateFolder(filename & timestamp)
答案 1 :(得分:0)
如果您只是想创建一个临时文件夹名称,我通常会这样做:
Do
strFolder = "c:\" & Left(fso.GetTempName(), 8)
Loop While fso.FolderExists(strFolder)
它是如何运作的?
GetTempName()
以下列格式返回8.3文件名:
radXXXXX.tmp
其中每个X
代表一个随机的十六进制数字。因此,您只需提取前8个字符以用于您的文件夹名称(或者您可以使用全名 - 没有什么能阻止文件夹使用"扩展名")。然后循环直到你生成一个不存在的那个。