Recursion 使用VBScript在C驱动器中搜索文件

Recursion 使用VBScript在C驱动器中搜索文件,recursion,vbscript,Recursion,Vbscript,我对VBScript非常陌生,我正在尝试编写一个简单的脚本,将目录中的文件提取到新目录。到目前为止,这就是我所拥有的(而且效果很好): 现在,如果可能的话,如果找不到“Desktop”文件夹,或者找不到“Test.zip”文件,我想在C驱动器中搜索它们,然后继续提取,等等。我看到了一些示例,但我不理解如何复制它们。如何在整个C驱动器和子文件夹中搜索这些文件 感谢您的帮助,提前谢谢 一般来说,递归搜索可以这样做: Function SearchFolder(fldr, name) Set Se

我对VBScript非常陌生,我正在尝试编写一个简单的脚本,将目录中的文件提取到新目录。到目前为止,这就是我所拥有的(而且效果很好):

现在,如果可能的话,如果找不到“Desktop”文件夹,或者找不到“Test.zip”文件,我想在C驱动器中搜索它们,然后继续提取,等等。我看到了一些示例,但我不理解如何复制它们。如何在整个C驱动器和子文件夹中搜索这些文件


感谢您的帮助,提前谢谢

一般来说,递归搜索可以这样做:

Function SearchFolder(fldr, name)
  Set SearchFolder = Nothing
  For Each f In fldr.Files
    If LCase(f.Name) = LCase(name) Then
      Set SearchFolder = f
      Exit Function
    End If
  Next

  For Each sf In fldr.SubFolders
    Set result = SearchFolder(sf, name)
    If Not result Is Nothing Then
      Set SearchFolder = result
      Exit Function
    End If
  Next
End Function

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = SearchFolder(fso.GetFolder("C:\"), "Test.zip")

然而,以这种方式搜索整个驱动器将需要相当长的时间。还有一些文件夹用户无权访问,因此如果您想实现这样的搜索,您必须考虑这些文件夹。

好的,这是真的,谢谢。基本上,(这不包括在我的代码中)我希望找到itunes的子文件夹,它将位于不同计算机上的不同位置。有没有什么主意,我可以不经过整个c驱动器就这样做?例如,在我的电脑上,您必须进入音乐>iTunes>(子文件夹)。在其他计算机上,它可能在文档中,或者其他地方(我不是说iTunes文件夹中的程序文件,这是另一个),我知道,你指的是库。
My Music
user shell文件夹是它的默认位置,可以从注册表中读取(
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\user shell Folders\My Music
)。我不在Windows上使用iTunes,所以我不知道在不更改该值的情况下是否可以选择其他位置,以及不同位置的存储位置。
Function SearchFolder(fldr, name)
  Set SearchFolder = Nothing
  For Each f In fldr.Files
    If LCase(f.Name) = LCase(name) Then
      Set SearchFolder = f
      Exit Function
    End If
  Next

  For Each sf In fldr.SubFolders
    Set result = SearchFolder(sf, name)
    If Not result Is Nothing Then
      Set SearchFolder = result
      Exit Function
    End If
  Next
End Function

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = SearchFolder(fso.GetFolder("C:\"), "Test.zip")