解压缩以特定字符串开头的文件

时间:2015-06-17 12:12:33

标签: vbscript wildcard unzip

这是我第二次尝试解决我面临的这个问题。

简而言之,我每周都会收到一些文件,这些文件以相同的11个字符开头,之后的任何内容都会因周而异。

我有一些基本的代码,当找到确切的文件名时解压缩文件,但我希望通过使用通配符的程序来远离它。所以任何一个zip文件和任何以这11个字符开头的东西。

我已经走到了这一步,但似乎撞到了一个名字空间错误的墙,有人可以帮我解决我出错的地方吗?

Set fso = CreateObject("Scripting.FileSystemObject")

ExtractTo="C:\Users\W1 Process\_ThisWeek\"

For Each f In fso.GetFolder("C:\Users\W1 Process\_ThisWeek\").Files
  If LCase(fso.GetExtensionName(f)) = "zip" And Left(f.Name, 11) = "Home Weekly" Then
    set objShell = CreateObject("Shell.Application")

    set FilesInZip=objShell.NameSpace(ZipFile).items
    objShell.NameSpace(ExtractTo).CopyHere(FilesInZip)

    Set fso = Nothing
    Set objShell = Nothing
  End If
Next

1 个答案:

答案 0 :(得分:0)

您可以使用regular expression来匹配变量文件名:

Set re = New RegExp
re.Pattern = "^home weekly.*\.zip$"

Set fso = CreateObject("Scripting.FileSystemObject")
Set app = CreateObject("Shell.Application")

ExtractTo = "C:\Users\W1 Process\_ThisWeek"

For Each f In fso.GetFolder("C:\Users\W1 Process\_ThisWeek").Files
  If re.Test(f.Name) Then
    Set FilesInZip = app.NameSpace(f.Path).Items
    app.NameSpace(ExtractTo).CopyHere(FilesInZip)
  End If
Next