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