Home 윈도우 폴더 강제 삭제
Post
Cancel

윈도우 폴더 강제 삭제

MFC 기본 함수 중 RemoveDirectory() 함수는 삭제하려는 폴더 안에 파일 또는 다른 폴더가 존재할 경우 FALSE를 반환합니다.

GetLastError: 145 (The directory is not empty.)

이를 해결하기 위해 MSDN에서는 SHFileOperation 함수 사용을 제안하고 있습니다.

To recursively delete the files in a directory, use the SHFileOperation function.

아래 코드는 위 방법 대신 더 간결한 코드를 활용해서 폴더를 재귀적으로 지우는 방법입니다.

1
2
3
4
5
6
7
8
9
10
11
void CClientControl::DeleteDirectory_Shell()
{
	CString strCmd;
    
	CString strTarget;
	// strTarget.Format(삭제할 폴더 경로 + 이름);
	// strTarget.Format(_T("E:\\Working\\test_folder")); 예시
	
	strCmd.Format(_T("/c echo Y | cmd /c rd /s %s"), strTarget);
	::ShellExecute(NULL, "open", "cmd", (LPCSTR)strCmd, NULL, SW_HIDE);
}

단, rd 명령어는 실행할 때 확인을 위해 응답(Y)을 받는데, echo Y를 통해 이를 강제로 동작 시킵니다.

위험한 커맨드 TOP 10

따라서 반드시 동작 전 strTarget에 정상적인 경로가 들어가는지 확인하고, 절대 경로를 사용합니다.

This post is licensed under CC BY 4.0 by the author.

파이썬 기본 문법 정리

YOLOv5 실습하기 - Jetson Xavier NX