2012-11-04 112 views
0

我需要vbscript通過文件迭代文件並查找今天創建的所有文件。DateDiff vbscript查找當前日期文件

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

我可以看到有今天的文件夾中的40個文件,但是當腳本掃描,雖然所有的文件,它列出了不到40也許文件同時,也在尋找當時的部分。

任何人都可以告訴我如何使用datediff函數,以便我可以實現所需的。

我希望它獲取所有文件的DATE部分是今天的日期部分,而不考慮時間部分。

回答

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 
+0

謝謝你,莫非你可能覺得一個場景,則DateDiff(「d」,RFile.DateLastModified,日期),將不等於零,而我可以手動看到所有文件有今天的DateModefied的? –

0

你最好還是先enumarating文件與WMI manupulating日期只比天月和年屬性忽略時間戳。

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 
相關問題