我有一个包含每天创建的文件的文件夹,该文件夹中有几种不同类型的文件(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
答案 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