vbscript 使用计数器生成唯一文件名

Posted

技术标签:

【中文标题】vbscript 使用计数器生成唯一文件名【英文标题】:vbscript unique filename generation using counter 【发布时间】:2018-09-03 14:50:30 【问题描述】:

我有一个 vbscript,它生成一个包含六位数字的文件,然后如果文件已经存在,我想在末尾添加 0001、0002、0003。我想我在这里遗漏了一些非常明显的东西,因为我在桌面上放了一个测试文件 0000610001.doc,我的脚本应该弹出一条新消息,说 0000610002.doc。

FolderRoot="c:\users\mozleye\"
Subfolder="desktop"
ClCode="000061"
n=1

filename=FolderRoot & subFolder & "\" & CLCode

'Pad the filename with leading zeros after the client number
Select Case Len(n)
    Case 1
    filename=filename & "000"
    Case 2
    filename=filename & "00"
    Case 3
    filename=filename & "0"
End Select

filename=filename & n & ".doc"
MsgBox(filename)    
'If the file name exists then keep adding 1 to n, regenerating the file name until the file name we
'have generated no longer exists

Do While File objFSO.FileExists(filename)
    MsgBox("Found a match!")
    filename=FolderRoot & subFolder & "\" & CLCode
    Select Case Len(n)
        Case 1
        filename=filename & "000"
        Case 2
        filename=filename & "00"
        Case 3
        filename=filename & "0"
    End Select
    n=n+1
    filename=filename & n & ".doc"
    MsgBox("New filename :" & filename)
Loop

MsgBox("All done")

【问题讨论】:

我不是 Vb 专家,但如果没有匹配项,我会尝试使用 \\ 作为反斜杠 【参考方案1】:

好的,所以最后我将起始计数器减少到零,然后将“while”位移动到循环旁边以强制它至少运行一次。我必须承认我仍然不完全明白为什么它有效而其他版本没有,但我希望这对某人有用:

Do 
    filename=FolderRoot & subFolder & "\" & CLCode
    Select Case Len(n)
        Case 1
            filename=filename & "000"
        Case 2
            filename=filename & "00"
        Case 3
            filename=filename & "0"
    End Select
    n=n+1
    filename=filename & n & ".doc"

Loop While objFSO.FileExists(filename)

【讨论】:

以上是关于vbscript 使用计数器生成唯一文件名的主要内容,如果未能解决你的问题,请参考以下文章

如何在VBScript中返回具有唯一计数的数组列表

vbscript 使用节点根据模板批量生成文件并使用VBScript自动填写excel

如何生成唯一的数字ID并在java中保持计数?

[VBScript] 自动删除2小时以前生成的文件

AWK:使用两个匹配条件的文件和计数相等的唯一标识符

生成用于使用模板的唯一模板实例