【问题标题】:Searching C Drive for a file with VBScript使用 VBScript 在 C 驱动器中搜索文件
【发布时间】:2013-08-07 06:22:11
【问题描述】:

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

'USER VAR REPRESENTS WINDOWS USERNAME
Set oShell = CreateObject( "WScript.Shell" )
user=oShell.ExpandEnvironmentStrings("%UserName%")

'FOLDER TO BE EXTRACTED
ZipFile="C:\Users\"&user&"\Downloads\Test.zip" 

'LOCATION TO EXTRACT FILES
ExtractTo="C:\Users\"&user&"\desktop" 

'EXTRACT ZIP FILE
Set objShell = CreateObject("Shell.Application")
Set FilesInZip=objShell.NameSpace(ZipFile).items
objShell.NameSpace(ExtractTo).CopyHere(FilesInZip)

Set fso = Nothing
Set objShell = Nothing
Set oShell = Nothing

现在,如果可能的话,如果找不到“Desktop”文件夹,或者找不到“Test.zip”文件,我想在C盘中搜索它们,然后继续解压等。我看过一些例子,但我不明白如何复制它们。如何在整个 C 盘和子文件夹中搜索这些文件?

我们将不胜感激,在此先感谢!

【问题讨论】:

    标签: recursion vbscript


    【解决方案1】:

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

    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 用户 shell 文件夹是它的默认位置,可以从注册表 (HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\My Music) 中读取。我不在 Windows 上使用 iTunes,所以我不知道您是否可以在不更改该值的情况下选择其他位置,以及该不同位置的存储位置。
    猜你喜欢
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多