1

我有这个非常复杂的要求。

我们有一堆从 ftp 服务器下载到本地目录中的文件夹中的压缩文件。

然后我们使用下面的代码解压缩文件。

Set objZip = CreateObject("XStandard.Zip")

Set FSO = CreateObject("Scripting.FileSystemObject")
Set fldr = FSO.GetFolder("C:\MUSK\FTP\MainFolder\")

For Each fil In fldr.Files
If LCase( Right( fil.Name, 4 ) ) = ".zip" Then
zipFilePath = fil.Path
objZip.UnPack zipFilePath, ("C:\MUSK\FTP\Current\")
End If
Next

到目前为止,一切都很好。

这就是问题所在。

这些下载的文件具有以下命名约定:

文件名_月-日-年.zip

示例:假设今天是 2012 年 5 月 16 日,文件名如下所示:

myFile_5-16-2012.zip

我们的要求是获取下载的压缩文件并将它们放在正确的文件夹中。

例如,我们有根据月份和年份命名的文件夹。

示例:我们有 JAN2012、FEB2012 等

所以以 myFIle_5-16-2012.zip 为例,myFile_5-16-2012.zip 是针对 MAY2012 的。

我们想使用上面的脚本来获取 myFile_5-16-2012.zip 并将其放在适当的文件夹中。在此示例中,适当的文件夹将是 MAY2012,然后将其解压缩。

基本上, MonthYear 文件夹将替换它:

objZip.UnPack zipFilePath, ("C:\MUSK\FTP\Current\")

换句话说,它将是 MAY2012 或任何 MonthYear 组合,而不是 Current 文件夹。

这可能吗?

我很乐意澄清。对不起,如果我混淆了任何人。

4

1 回答 1

0

这很简单。我会:

  1. 创建一个将文件名转换为适当的 MMMYYYY 格式的函数
  2. 使用FileSystemObject判断步骤1创建的文件夹名称是否存在,如果需要就创建
  3. 将完整目录传递给您的 XStandard.Zip 对象

在此处查看 FileSystemObject 支持的方法:http: //msdn.microsoft.com/en-us/library/z9ty6h50 (v=vs.85).aspx

你至少需要.FolderExistsand 。.CreateFolder


我快速编写的 VBScript 可能会使用一些错误检查等。享受

' parse date, assumes file name is in foo_M-D-YYYY.ext format
Function parseDate(s)
    dim dt
    dt = CDate(split(split(s, "_")(1), ".")(0))
    parseDate = Monthname(Month(dt)) & Year(dt)
End Function
于 2012-05-17T02:10:33.430 回答