16,548
社区成员




void Cp3Dlg::OnBnClickedButton2()
{
CString path1 = TEXT("D:\\book");
path1.Append(TEXT("\\*.*"));
CString path2 = TEXT("D:\\book-patch");
WIN32_FIND_DATA FindFileData;
HANDLE hFind=::FindFirstFile(path1,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
CString fileName;
fileName=FindFileData.cFileName;
//MessageBox(FindFileData.ftLastWriteTime);
path1.Append(TEXT("\\"));
path1.Append(fileName);
path2.Append(TEXT("\\"));
path2.Append(fileName);
CopyFile(path1,path2,true);
if(!FindNextFile(hFind,&FindFileData)) break;
}
}
void Cp3Dlg::OnBnClickedButton2()
{
CString path1 = TEXT("D:\\book");
CString path2 = TEXT("D:\\book-patch");
CString timeSpan = TEXT("2009-1-1 00:00:00");
WIN32_FIND_DATA FindFileData;
HANDLE hFind=::FindFirstFile(path1 + TEXT("\\*.*"),&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
if(!PathIsDirectory(path2)) CreateDirectory(path2,NULL);
int nYear, nMonth, nDate, nHour, nMin, nSec;
char timeStr[64];
wcstombs(timeStr, timeSpan, timeSpan.GetLength());
sscanf(timeStr,"%d-%d-%d %d:%d:%d", &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec);
CTime t(nYear, nMonth, nDate, nHour, nMin, nSec);
while(TRUE)
{
CString fileName = FindFileData.cFileName;
DWORD attr = FindFileData.dwFileAttributes;
int a = FILE_ATTRIBUTE_DIRECTORY;
CTime fileTime(FindFileData.ftLastWriteTime);
if(fileTime>t)
{
CopyFile(path1 + TEXT("\\") + fileName,path2 + TEXT("\\") + fileName,true);
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
}
CTime spanTime(2010,8,10,0,0,0);
CTime fileTime(FindFileData.ftLastWriteTime);
if (fileTime>spanTime)
CopyFile(...);
void Cp3Dlg::OnBnClickedButton2()
{
CString path1 = TEXT("D:\\book");
CString path2 = TEXT("D:\\book-patch");
CString timeSpan = "2010-08-10";
WIN32_FIND_DATA FindFileData;
HANDLE hFind=::FindFirstFile(path1 + TEXT("\\*.*"),&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
CString fileName = FindFileData.cFileName;
//lpSystemTime s;
//FileTimeToSystemTime(FindFileData.ftLastWriteTime,s);
//MessageBox(FindFileData.ftLastWriteTime);
// 这里该怎么判断时间大于timeSpan呢?
CopyFile(path1 + TEXT("\\") + fileName,path2 + TEXT("\\") + fileName,true);
if(!FindNextFile(hFind,&FindFileData)) break;
}
}
typedef struct _WIN32_FIND_DATA { // wfd
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA
在while循环中根据上述结构的ftLastWriteTime来判断是否CopyFile就可以了。void Cp3Dlg::OnBnClickedButton2()
{
CString path1 = TEXT("D:\\book");
path1.Append(TEXT("\\*.*"));
CString path2 = TEXT("D:\\book-patch");
WIN32_FIND_DATA FindFileData;
HANDLE hFind=::FindFirstFile(path1,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
CString fileName;
fileName=FindFileData.cFileName;
//MessageBox(FindFileData.ftLastWriteTime);
CString s1,s2;
s1=path1;
s2=path2;
s1.Append(TEXT("\\"));
s1.Append(fileName);
s2.Append(TEXT("\\"));
s2.Append(fileName);
CopyFile(s1,s2,true);
if(!FindNextFile(hFind,&FindFileData)) break;
}
}