|
이번에 프로그램 개발하면서 필요해서 Q&A 에서 찾아 보았는데
한참만에 헤메이다 찾아서 많이 사용하는 팁이라 한번 올려 봅니다.
Q&A 부분에 올려진 것은 화일만 삭제가 되는 지라 조금 수정하였습니다.
void __fastcall DeleteTree(String stDirectory)
{
WIN32_FIND_DATA fdFiles;
HANDLE hdHandle;
char chFileName[256];
hdHandle = FindFirstFile(((String)stDirectory + "\\*").c_str(), &fdFiles);
if(hdHandle)
{
do
{
sprintf(chFileName, "%s\\%s", stDirectory.c_str(), fdFiles.cFileName);
if(strcmp(fdFiles.cFileName, ".") && strcmp(fdFiles.cFileName, ".."))
{
if(fdFiles.dwFileAttributes & FILE_ATTRIBUTE_READONLY) // Read-Only 파일 처리
SetFileAttributes(chFileName, fdFiles.dwFileAttributes & ~FILE_ATTRIBUTE_READONLY);
if(fdFiles.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
DeleteTree(chFileName) ; // 디렉토리면 DeleteTree를 재귀 호출
RemoveDir(chFileName) ; // delete directory
}
else DeleteFile(chFileName);
}
} while(FindNextFile(hdHandle, &fdFiles));
FindClose(hdHandle);
RemoveDir(stDirectory) ;
}
}
|
c:\>rd -s -q d:\testDir
shellexcute로 날리면 되지 않나요?