我需要使用vbscript来遍历文件并查找今天创建的所有文件。
DateDiff("d",RFile.DateLastModified ,Date)=0
我可以看到今天文件夹中有40个文件,但是当脚本扫描所有文件时,它会列出少于40个文件。也许它也在查看时间部分。
任何人都可以告诉我具体如何使用datediff
功能,以便我可以实现所需。
我希望它能够获得DATE部分是今天日期部分的所有文件而不考虑时间部分。
答案 0 :(得分:0)
在VBScript中创建没有时间部分的日期时间值时,自动假定时间为00:00:00(例如,参见TimeValue(Date)
的返回值)。由于此DateDiff()
将文件的“上次修改”时间戳与00:00:00的当前日期进行比较,并在差值超过±24小时时返回大于1(或小于-1)的值。
为了比较两个时间戳的日期部分,请使用FormatDateTime()
函数:
today = FormatDateTime(Date, vbShortDate)
If FormatDateTime(RFile.DateLastModified, vbShortDate) = today Then
'...
End If
答案 1 :(得分:0)
最好只使用WMI枚举文件来操作日期,只是比较忽略时间戳的日月和年属性。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = _
objWMIService.ExecQuery("Select * From CIM_DataFile Where Drive = 'E:' and Path = '\\Test\\'")
For Each objFile in colFiles
dtCreationDate = WMIDateStringToDate(objFile.CreationDate)
If Day(Now)&Month(Now)&Year(Now) = Day(dtCreationDate)&Month(dtCreationDate)&Year(dtCreationDate) Then
WScript.Echo objFile.Name
End If
Next
Function WMIDateStringToDate(sCreatoionDate)
WMIDateStringToDate = CDate(Mid(sCreatoionDate, 7, 2) & "/" & _
Mid(sCreatoionDate, 5, 2) & "/" & Left(sCreatoionDate, 4) _
& " " & Mid (sCreatoionDate, 9, 2) & ":" & _
Mid(sCreatoionDate, 11, 2) & ":" & Mid(sCreatoionDate, 13, 2))
End Function