Computer/C, CPP, MFC
하위폴더까지 전체 복사하기
hwaya.
2015. 10. 2. 16:32
반응형
BOOL ---------------::XCopy(char *Src, char *Dest, int my94)
{
HANDLE hSrch;
WIN32_FIND_DATA wfd;
BOOL bResult = TRUE;
char fname[MAX_PATH];
char WildCard[MAX_PATH]; // 원본
char HoneyCard[MAX_PATH]; // 사본
char SrcFile[MAX_PATH];
char DestFile[MAX_PATH];
strcpy_s(WildCard, Src);
strcat_s(WildCard, "\*.*");
strcpy_s(HoneyCard, Dest);
// 폴더위치
if (my94 == 0) // 재귀
{
}
else if (my94 == 1) // EZ-Raschel
{
strcat_s(HoneyCard, "\EZ-Raschel\\");
}
else if (my94 == 2) // Raschel
{
strcat_s(HoneyCard, "\Raschel\\");
}
CreateDirectory(HoneyCard, NULL);
hSrch = FindFirstFile(WildCard, &wfd);
if (hSrch == INVALID_HANDLE_VALUE)
{
return FALSE;
}
while (bResult)
{
wsprintf(fname, _T("%s\%s"), Src, wfd.cFileName);
// 서브 디렉토리가 발견되면 서브 디렉토리를 복사한다.
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (wfd.cFileName[0] != '.')
{
wsprintf(SrcFile, _T("%s\%s\\"), Src, wfd.cFileName);
wsprintf(DestFile, _T("%s\%s\\"), HoneyCard, wfd.cFileName);
XCopy(SrcFile, DestFile, 0);
}
}
else
{
wsprintf(DestFile, _T("%s\%s"), HoneyCard, wfd.cFileName);
CopyFile(fname, DestFile, FALSE);
}
bResult = FindNextFile(hSrch, &wfd);
}
FindClose(hSrch);
return TRUE;
}
반응형