DateDiff vbscript查找当前日期文件

时间:2012-11-04 18:26:27

标签: vbscript

我需要使用vbscript来遍历文件并查找今天创建的所有文件。

DateDiff("d",RFile.DateLastModified ,Date)=0

我可以看到今天文件夹中有40个文件,但是当脚本扫描所有文件时,它会列出少于40个文件。也许它也在查看时间部分。

任何人都可以告诉我具体如何使用datediff功能,以便我可以实现所需。

我希望它能够获得DATE部分是今天日期部分的所有文件而不考虑时间部分。

2 个答案:

答案 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