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

How to copy files from specific time range?

我有一个包含每天创建的文件的文件夹,该文件夹中有几种不同类型的文件(txt、msg 等),但我需要想出一个允许我复制的脚本一个特定的文件,比方说 msg 文件形式 2015-05-05。这些文件有时 windows 会出现,比如上午 10 点之后会有一个 txt 文件,但不会出现 soner 等等。

我的脚本要求用户输入一个日期,例如 2015-05-05,应该在该日期复制文件。脚本向该日期添加了一个小时戳 (10:00:00 PM),因此 "cut off" 日期将是:2015-05-05 10:00:00 PM。 然后我使用 DateDiff 的小时间隔为 12,脚本跨越所有时间间隔,"cut off date" 和 txt 文件的创建日期并将它们复制到另一个文件夹。 但是,它会复制所有满足该要求的 txt 文件,因此所有在上午 10 点到晚上 10 点之间创建的文件,无论日期、月份和年份如何。我只需要从那一天复制 txt 文件! 我该怎么做才能让该脚本检查时间 window,比如 2015-05-05 10:00:00 PM ±12 小时?我需要一种时间范围的方法,该范围的中心将是用户标记的一天的晚上 10 点,例如 2015-05-05,然后从该点开始(2015-05-05 10:00:00下午)我需要检查±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

通过分别添加和减去 12 小时 to/from 您的参考日期来简单地建立您的日期边距:

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