如果已存在具有相同名称的文件夹,则动态更改新文件夹名称

时间:2014-07-08 00:07:42

标签: vbscript

如果已经存在具有相同名称的文件夹,是否有办法动态更改新文件夹名称?例如,如果我使用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")

等等。

2 个答案:

答案 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个字符以用于您的文件夹名称(或者您可以使用全名 - 没有什么能阻止文件夹使用"扩展名")。然后循环直到你生成一个不存在的那个。

相关问题