如何根据月份和年份将文件移动到适当的文件夹?

时间:2012-05-17 01:37:36

标签: vbscript string-parsing

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

我们将一堆压缩文件从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

到目前为止一切顺利。

以下是问题所在。

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

filename_month-day-year.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 \”)

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

这可能吗?

我非常乐意澄清。对不起,如果我困惑任何人。

1 个答案:

答案 0 :(得分:0)

这很简单。我会:

  1. 创建一个将文件名转换为适当的MMMYYYY格式的函数
  2. 使用FileSystemObject确定是否存在在步骤1中创建的文件夹名称,并在需要时创建
  3. 将完整目录传递给XStandard.Zip对象
  4. 在此处查看FileSystemObject支持的方法: http://msdn.microsoft.com/en-us/library/z9ty6h50(v=vs.85).aspx

    至少你需要.FolderExists.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
    
相关问题