解压以特定字符串开头的文件
Unzip files that begin with a particular string
这是我第二次尝试解决我面临的这个问题。
简而言之,我每周都会收到一些文件,这些文件以相同的 11 个字符开头,之后的任何内容每周都可能不同。
我有一些基本代码可以在找到确切的文件名时解压缩文件,但我希望通过使用通配符的过程来摆脱它。因此,任何 zip 文件以及以这 11 个字符开头的任何内容。
我已经走到这一步了,但似乎遇到了名字 space 错误,有人可以帮我解决我哪里出错了吗?
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
您可以使用 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
这是我第二次尝试解决我面临的这个问题。
简而言之,我每周都会收到一些文件,这些文件以相同的 11 个字符开头,之后的任何内容每周都可能不同。
我有一些基本代码可以在找到确切的文件名时解压缩文件,但我希望通过使用通配符的过程来摆脱它。因此,任何 zip 文件以及以这 11 个字符开头的任何内容。
我已经走到这一步了,但似乎遇到了名字 space 错误,有人可以帮我解决我哪里出错了吗?
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
您可以使用 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