如何从特定时间范围复制文件?

时间:2016-02-04 06:39:19

标签: file date vbscript copy datediff

我有一个包含每天创建的文件的文件夹,该文件夹中有几种不同类型的文件(txt,msg等),但我需要提供一个允许我复制特定文件的脚本文件,让我们说msg文件形式2015-05-05。有一些时间窗口会出现这些文件,比如在上午10点之后会有一个txt文件,但没有超声波等等。

我的脚本要求用户输入应该复制文件的日期,例如2015-05-05。脚本会在该日期添加一小时标记(10:00:00 PM),因此“截止”日期将为:2015-05-05 10:00:00 PM。 然后我使用DateDiff,小时间隔为12,脚本跨越每个间隔,“截止日期”和txt文件的创建日期,并将它们复制到另一个文件夹。 但是,它会复制满足这些要求的所有txt文件,因此所有文件都是在上午10点到晚上10点之间创建的,无论日,月和年。我需要复制特定日期的txt文件! 我该怎么做才能让脚本检查一个时间窗口,比如2015-05-05 10:00:00 PM±12小时?我需要一种方法来制作一个时间范围,该范围的中心将是用户将标记的一天的下午10点,例如2015-05-05,并从那一点(2015-05-05 10:00:00 PM)我需要检查±12小时。

这是我的剧本,但它不按我想要的方式工作:

Dim inputday

sourcepath = "C:\EveryDayFiles\"
NewFolder = "C:\Copy\EDF"

Do
    inputday = InputBox ("Type in a date:", "Copy Date")
    If inputday = "" Then
        Msgbox "Wrong Date!"
    End If
Loop Until inputday > ""
cutofdate = inputday & " 10:00:00 PM"
Set objfso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objfso.GetFolder(sourcepath)
For Each objFile In objFolder.Files
    dFileCrDate = objfso.GetFile(objFile).DateCreated
    If timediff = DateDiff("h", dFileCrDate, Datapodana) =< 12 Then
        If objfso.GetExtensionName(objFile) = "txt" Then
            objfso.GetFile(objFile).Copy NewFolder & "\", True
        End If
    End If
Next

1 个答案:

答案 0 :(得分:0)

通过分别在参考日期添加和减去12小时来简单地建立您的日期保证金:

refdate = CDate(inputday & " 22:00:00")
mindate = DateAdd("h", -12, refdate)
maxdate = DateAdd("h", 12, refdate)

然后检查文件的创建日期是否在这些边距之间:

For Each objFile In objfso.GetFolder(sourcepath).Files
  If objFile.DateCreated >= mindate And objFile.DateCreated <= maxdate Then
    objFile.copy NewFolder & "\", True
  End If
Next