windows - Justering af en søgetid

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg gør en søgning på filer. Jeg har brug for at justere søgetiden fra den aktuelle tid (filtid) til den aktuelle tid (filtid) mindre end et minut. Hvordan ville jeg gøre dette. Dette er hvad jeg har hidtil. Tak.


struct file\_data 
{ 
std::wstring sLastAccessTime; 
\_\_int64 nFileSize; 
}; 

int GetFileList(const wchar\_t *searchkey, std::map<std::wstring, file\_data> &map) 
{ 
    WIN32\_FIND\_DATA fd; 
    HANDLE h = FindFirstFile(searchkey,&fd); 
    if(h == INVALID\_HANDLE\_VALUE) 
{ 
    return 0; // no files found 
} 
while(1) 
{ 
    wchar\_t buf[128]; 
    FILETIME ft = fd.ftLastWriteTime; 
    SYSTEMTIME sysTime; 
    FileTimeToSystemTime(&ft, &sysTime); 
    wsprintf(buf, L"\%d-\%02d-\%02d",sysTime.wYear, sysTime.wMonth, sysTime.wDay); 

    file\_data filedata; 
    filedata.sLastAccessTime= buf; 
    filedata.nFileSize      = (((\_\_int64)fd.nFileSizeHigh) << 32) + fd.nFileSizeLow; 

    map[fd.cFileName]= filedata; 

    if (FindNextFile(h, &fd) == FALSE) 
        break; 
} 
return map.size(); 
} 

int main() 
{ 
std::map<std::wstring, file\_data> map; 
GetFileList(L"C:\Users\DS\Downloads\*.jpg", map); 
GetFileList(L"C:\Users\DS\Downloads\*.txt", map); 
int count = GetFileList(L"C:\Users\DS\Downloads\*.pdf", map);

for(std::map<std::wstring, file\_data>::const\_iterator it = map.begin(); 
    it != map.end(); ++it) 
{ 

Bedste reference


Brug GetSystemTimeAsFileTime for at få den aktuelle tid i FILETIME format. Subtrahere 6000000000 for at gå tilbage i tiden et minut. Brug CompareFileTime for at sammenligne hver fils tid til den værdi.