2013-05-02 66 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

相關問題