2013-05-02 26 views
1

我想检查文件夹是否大于30天,并有下面的代码如何comapre 2个FILETIME变量,看是否有文件是超过30天

static bool ExpiredDirectory(CComBSTR directory) 
{ 
    WIN32_FILE_ATTRIBUTE_DATA fileAttrData = {0}; 
    GetFileAttributesEx(directory, GetFileExInfoStandard, &fileAttrData); 

    FILETIME ftCreatedDate = fileAttrData.ftCreationTime; 
    FILETIME now; 
    SYSTEMTIME nowst; 
    ULARGE_INTEGER t1, t2; 
    GetSystemTime(&nowst); 
    SystemTimeToFileTime(&nowst, &now); 

     ---compare code goes here 

} 

我想比较上面的变量以查看ftCreatedDate是否大于30天

+0

退房的CompareFileTime功能。 – 2013-05-02 14:14:46

+0

谢谢,但比较文件时间只能比较和说哪两个是最大的。我想检查比例,例如它是否大于30天 – John 2013-05-02 14:28:28

+0

是真的,但标题没有提到30天的位,所以其他具有相同问题的人不会知道这个问题实际上与他们的相同。 – 2013-05-02 14:43:14

回答

1

我从30 days Difference on SYSTEMTIME帮助修复了此问题。结果这个人想要做的差不多了。前

我的代码应该看到,这是现在

WIN32_FILE_ATTRIBUTE_DATA fileAttrData = {0}; 
GetFileAttributesEx(directory, GetFileExInfoStandard, &fileAttrData); 
FILETIME ftCreationTime = fileAttrData.ftCreationTime; 
FILETIME now; 
SYSTEMTIME nowst; 
ULARGE_INTEGER t1, t2; 

GetSystemTime(&nowst); 
SystemTimeToFileTime(&nowst, &now); 

memcpy(&t1, &ftCreationTime, sizeof(t1)); 
memcpy(&t2, &now, sizeof(t1)); 
ULONGLONG diff = (t1.QuadPart<t2.QuadPart)?(t2.QuadPart-t1.QuadPart):(t1.QuadPart-t2.QuadPart); 

if(diff>30*24*60*60*(ULONGLONG)10000000) 
{ 
    return true; 
} 

return false; 
+0

请注意,这也会检测将来创建少于30天的文件。 – 2013-05-02 14:42:19

+0

真的。这是为什么? – John 2013-05-02 15:54:02

+1

由于't1.QuadPart 2013-05-02 17:15:35