특정 폴더의 특정 파일만 파일명으로 지우기 | |||
| |||
파일날짜로 지우는 방법도 있겠으나 하기 예제는 파일명으로 지운다. 지울때 최소 2개는 남기도록 구현해보았다. #define NUMBER_OF_REMAINABLE_FILES 2 int RemoveOldFilesByName( char *path, char *filter, int number_of_remainable_files) { CFileFind finder; int filecnt; int need_slash; char strPath[1024]; char strFileName[256][1024]; int total_number_files_erased=0; if (path[strlen(path)-1]!='') need_slash=1; else need_slash=0; if (need_slash) sprintf( strPath, "%s\%s", path, filter); else sprintf( strPath, "%s%s", path, filter); BOOL bWorking = finder.FindFile( strPath); filecnt=0; while (bWorking) { bWorking = finder.FindNextFile(); if(finder.IsDots()) continue; strcpy( strFileName[filecnt++], finder.GetFileName()); } if (filecnt>NUMBER_OF_REMAINABLE_FILES) { char tmp[1024]; int i, j, b; for(i=0; i<filecnt; i++) { b=0; for( j=1; j<filecnt; j++) { if (strcmp( strFileName[j-1], strFileName[j])>0) { strcpy( tmp, strFileName[j-1]); strcpy( strFileName[j-1], strFileName[j]); strcpy( strFileName[j], tmp); b=1; } } if (!b) break; } for( i=0; i<(filecnt-NUMBER_OF_REMAINABLE_FILES); i++) { if (need_slash) sprintf( tmp, "%s\%s", path, strFileName[i]); else sprintf( tmp, "%s%s", path, strFileName[i]); DeleteFile( tmp); total_number_files_erased++; } } return total_number_files_erased; } 실행을 위한 예제는 다음과 같다. RemoveOldFilesByName( "c:pub", "pub_*.rar", 2); 서버 백업을 위한 샘플 소프트웨어를 만들다가 혹시 도움이 될 분이 있을까 싶어 예제를 남겨본다. Tags: DeleteFile FindFile folder 백업 서버백업 윈도우즈 지우기 | |||
| |||
| |||
Login for comment |
SIMILAR POSTS ShellExecuteEx를 이용한 커맨드라인 기반 어플리케이션 실행 |
OTHER POSTS IN THE SAME CATEGORY Windows XP에서 윈도우 창이 뜨는 속도를 높이는 방법 |