Vbscript VBS-使用特定名称重命名许多文件

Vbscript VBS-使用特定名称重命名许多文件,vbscript,Vbscript,我最初在这里发布: 有人提供了一个很好的解决方案: Dim fso, folder, file, folderName, dict 'Path folderName = "X:\Test\3rd Party" 'Future FileName Set dict = CreateObject("Scripting.Dictionary") dict.Add "MyFile.xlsx", "Mine.xlsx" dict.Add "YourFile.xlsx", "Yours.xlsx" di

我最初在这里发布:

有人提供了一个很好的解决方案:

Dim fso, folder, file, folderName, dict

'Path
folderName = "X:\Test\3rd Party"

'Future FileName
Set dict = CreateObject("Scripting.Dictionary")
dict.Add "MyFile.xlsx", "Mine.xlsx"
dict.Add "YourFile.xlsx", "Yours.xlsx"
dict.Add "HisFile.xlsx", "His.xlsx"
dict.Add "HersFile.xlsx", "Hers.xlsx"
dict.Add "TheirFile.xlsx", "Theirs.xlsx"
dict.Add "OurFile.xlsx", "Ours.xlsx"

' Create filesystem object and the folder object
Set fso = CreateObject("Scripting.FileSystemObject")  
Set folder = fso.GetFolder(folderName)  

' Loop over all files in the folder until the searchFileName is found
For Each file In folder.Files
    If dict.Exists(file.Name) Then file.Name = dict(file.Name)
Next
但唯一的问题是查找精确的文件名匹配。我最初的帖子在一个循环中包含了17个if语句,每个if语句都使用
InStr
函数来查找部分字符串匹配

不过,上面的解决方案要干净得多,所以对它的任何帮助都将是巨大的


也许只是想知道是否还有更好的方法来做我想做的事情。例如,重命名文件后,它将被排除在下一个循环之外,通过?

将部分字符串映射到字典中的文件名

Set dict = CreateObject("Scripting.Dictionary")
dict.Add "MyFile", "Mine.xlsx"
dict.Add "YourFile", "Yours.xlsx"
dict.Add "His", "His.xlsx"
...
并添加一个嵌套循环,在其中迭代部分文件名并对照当前文件名检查它们:

For Each file In folder.Files
    For Each str In dict.Keys
        If InStr(str, file.Name) > 0 Then
            file.Name = dict(str)
            Exit For
        End If
    Next
Next

先生,你是个天才:)