Vbscript 递归文件重命名

Vbscript 递归文件重命名,vbscript,Vbscript,出于法律原因,我的公司正试图从我们的整个文件系统中删除一个特定的首字母缩略词。搜索返回了近30000个上述首字母缩略词的实例。我使用这些建议编写了以下VBS,试图使流程递归。不幸的是,我没有正确地实施它 我在第3行收到一个“无效的过程调用或参数”错误。 如果我编辑它以引用根文件夹,则会在第18行中得到一个必需的对象:“File”错误 Set objFso = CreateObject("Scripting.FileSystemObject") Set Folder = objFSO.GetFol

出于法律原因,我的公司正试图从我们的整个文件系统中删除一个特定的首字母缩略词。搜索返回了近30000个上述首字母缩略词的实例。我使用这些建议编写了以下VBS,试图使流程递归。不幸的是,我没有正确地实施它

我在第3行收到一个“无效的过程调用或参数”错误。 如果我编辑它以引用根文件夹,则会在第18行中得到一个必需的对象:“File”错误

Set objFso = CreateObject("Scripting.FileSystemObject")
Set Folder = objFSO.GetFolder("<folderpath>")

TraverseFolders objFso.GetFolder(strPath)

Function TraverseFolders(fldr)
    For Each File In Folder.SubFolders
        sNewFile = File.Name
        sNewFile = Replace(sNewFile, "old acronym", "new acronym")
        If (sNewFile <> File.Name) Then
            File.Move(File.ParentFolder + "\" + sNewFile)
        End If
    Next

    For Each sf In fldr.SubFolders
        TraverseFolders sf
    Next
    sNewFile = File.Name
    sNewFile = Replace(sNewFile, "old acronym", "new acronym")
    If (sNewFile <> File.Name) Then
        File.Move(File.ParentFolder + "\" + sNewFile)
    End If
End Function
Set objFso=CreateObject(“Scripting.FileSystemObject”)
Set Folder=objFSO.GetFolder(“”)
TraverseFolders objFso.GetFolder(strPath)
函数遍历文件夹(fldr)
对于Folder.SubFolders中的每个文件
sNewFile=File.Name
sNewFile=替换(sNewFile,“旧首字母缩写词”、“新首字母缩写词”)
如果是(sNewFile File.Name),则
File.Move(File.ParentFolder+“\”+sNewFile)
如果结束
下一个
对于fldr子文件夹中的每个sf
遍历文件夹
下一个
sNewFile=File.Name
sNewFile=替换(sNewFile,“旧首字母缩写词”、“新首字母缩写词”)
如果是(sNewFile File.Name),则
File.Move(File.ParentFolder+“\”+sNewFile)
如果结束
端函数

我缺少什么可以让这个循环工作?

对于那些在这里遇到困难的人来说,问题是定义strPath和reference文件夹,而不是fldr。 以下是正确的代码:

Set objFso = CreateObject("Scripting.FileSystemObject")
Set strPath = objFSO.GetFolder("<folder path>")
'setting the strPath instead of the unused Folder'
TraverseFolders objFso.GetFolder(strPath)

Function TraverseFolders(fldr)

  For Each File In fldr.Files
  'Referencing fldr instead of the unused Folder'
    sNewFile = File.Name
    sNewFile = Replace(sNewFile,"old acronym","new acronym")
    if (sNewFile<>File.Name) then 
        File.Move(File.ParentFolder+"\"+sNewFile)
    end if

Next

  For Each sf In fldr.SubFolders
    TraverseFolders sf  
    'Removed unnecessary code duplicate'
    Next
End Function
Set objFso=CreateObject(“Scripting.FileSystemObject”)
设置strPath=objFSO.GetFolder(“”)
'设置strPath而不是未使用的文件夹'
TraverseFolders objFso.GetFolder(strPath)
函数遍历文件夹(fldr)
对于fldr.Files中的每个文件
'引用fldr而不是未使用的文件夹'
sNewFile=File.Name
sNewFile=替换(sNewFile,“旧首字母缩写词”、“新首字母缩写词”)
如果是(sNewFileFile.Name),则
File.Move(File.ParentFolder+“\”+sNewFile)
如果结束
下一个
对于fldr子文件夹中的每个sf
遍历文件夹
'删除了不必要的代码重复'
下一个
端函数

对于文件夹中的每个文件。子文件夹
是错误的。那么,什么是正确的呢?对于fldr.Files中的每个文件,可能需要使用
,并在第二次循环后删除文件重命名代码。另外,代码中的strPath未定义。谢谢,这是您两次执行的strPath
objFSO.GetFolder
Set strPath=objFSO.GetFolder(“”)应该是
strPath=“”