在指定的日期范围之间复制文件

时间:2011-07-05 07:28:02

标签: vbscript

我想将文件从一个文件夹复制到另一个文件夹,该文件夹使用VBS在特定日期范围之间。

例如我想复制从06/11/2009到06/12/2010的文件。 我怎么能在VB脚本中做到这一点。

2 个答案:

答案 0 :(得分:1)

WMI是一种选择吗?如果是这样,这是一个基于 Hey,Scripting Guy!文章How Can I Delete All Files Older Than a Specified Date?中的示例脚本:

strComputer = "." 

strFolder = "C:\FromFolder"
strNewFolder = "C:\ToFolder"

strDateFrom = "20090611000000.000000+00" ' 06/11/2009
strDateTo   = "20100612000000.000000+00" ' 06/12/2010


Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colFiles = oWMI.ExecQuery _ 
    ("ASSOCIATORS OF {Win32_Directory.Name='" & strFolder & "'} WHERE " _ 
        & "ResultClass = CIM_DataFile")

For Each oFile in colFiles
    If oFile.CreationDate > strDateFrom And oFile.CreationDate < strDateTo Then
        'WScript.Echo "Full path:     " & oFile.Name
        'WScript.Echo "Creation date: " & oFile.CreationDate

        oFile.Copy strNewFolder & "\" & oFile.FileName & "." & oFile.Extension
        oFile.Delete
    End If
Next

这是一个略有不同的变体,其中日期检查包含在WMI查询中:

strComputer = "."
strDateFrom = "20090611000000.000000+00" ' 06/11/2009
strDateTo   = "20100612000000.000000+00" ' 06/12/2010
strNewFolder = "C:\ToFolder"
iFlags = 48

Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colFiles = oWMI.ExecQuery( _
    "SELECT * FROM CIM_DataFile" & _
    " WHERE Drive = 'C:' AND Path = '\\FromFolder\\'" & _
    " AND CreationDate >= '" & strDateFrom & "'" & _
    " AND CreationDate <= '" & strDateTo & "'" _
    ,,iFlags)

For Each oFile in colFiles
    'WScript.Echo "Full path:     " & oFile.Name
    'WScript.Echo "Creation date: " & oFile.CreationDate

    oFile.Copy strNewFolder & "\" & oFile.FileName & "." & oFile.Extension
    oFile.Delete
Next

一些注意事项:

  • 该脚本是非递归的,也就是说,它只从源文件夹本身而不是子文件夹中移动文件。
  • 日期以UTC格式指定。有关此格式的更多信息,请参阅我链接的文章。
  • WMI不包含移动文件和文件夹的方法,因此脚本副本会删除文件。

答案 1 :(得分:0)

您可以使用FileSystemObject。以下将获取创建文件的日期:

   Dim fso, myfile, d
   Set fso = CreateObject("Scripting.FileSystemObject")

   Set myfile = fso.GetFile("something.dat")
   d = myfile.DateCreated
   MsgBox d

了解更多here

Here是如何遍历给定文件夹中的文件的示例。对于每个文件,您可以检查日期,决定是否喜欢它,如果是,copy the file