누군가 오래된 파일을 자동으로 삭제하는 명령프롬프트(CMD) 배치(bat)을 만들어 사용하고 있는데 빈 디렉터리도 같이 삭제하는 방법에 대해 문의해 오신 적이 있었습니다. 윈도우의 명령어를 사용하면 비교적 간단하게 빈 폴더(디렉터리)만 삭제할 수 있습니다.
참고로 빈 폴더라고 해서 무조건 삭제하는 것은 무척 위험한 행위입니다.
윈도우 시스템과 관련된 폴더나 설치된 응용프로그램과 관련되 폴더는 비록 빈 폴더라고 해도 무조건 삭제하는 것은 위험합니다. 최악의 경우 윈도우를 새로 설치하거나 해당 응용프로그램을 새로 설치해야 하는 경우가 발생할 수도 있습니다.
하위 폴더까지 점검해서 정말 삭제해도 되는 폴더(디렉터리)인지 잘 확인하고 삭제 작업을 진행하시기 바랍니다.
이번 글에서는 윈도우에서 빈 폴더(디렉터리)를 일괄적으로 삭제하는 방법 3가지에 대해 알아보겠습니다.
ROBOCOPY를 사용하여 빈 디렉터리(폴더) 일괄 삭제 방법
– 다른 포스팅 글에서 ROBOCOPY 명령어에 대해 설명한 적이 있습니다. /MIR 옵션을 사용하여 디스크를 백업하는 용도로 많이 사용한다고 설명을 했습니다. (윈도우 ROBOCOPY 명령어로 하드디스크나 폴더를 백업 또는 미러링 하는 방법)
– 이번에는 /S 옵션과 /MOVE 옵션을 사용하여 빈 디렉터리를 지우는 방법에 대한 설명입니다.
– 가장 간단하게 빈 폴더를 일괄 삭제하는 방법입니다.
– 아래 화면처럼 D:\tmp 디렉터리에 있는 모든 빈 디렉터리를 삭제해 보겠습니다.
– 사용예 : ROBOCOPY “D:\tmp” “D:\tmp” /S /MOVE
– 설명 :
- 앞의 “D:\tmp”는 원본 디렉터리이고, 뒤의 “D:\tmp”는 대상 디렉터리입니다.
- 원본 디렉터리와 대상 디렉터리를 같게 해주는 것이 포인터입니다.
- /S 옵션은 비어 있는 디렉터리는 제외하고 하위 디렉터리를 복사하는 옵션입니다.
- /MOVE 옵션은 파일 및 디렉터리를 이동하는 옵션입니다. 즉 복사한 다음 원본은 삭제합니다.
– robocopy 한 줄의 명령어로 하위 디렉터리를 포함한 모든 빈 디렉터리가 삭제되었음을 알 수 있습니다.
– 만약 배치(Batch) 파일을 만들어 사용할 때 “D:\tmp”로 안될 경우 “D:\\tmp“처럼 역슬레쉬(\)를 2개 붙여주면 잘 처리됩니다.
FOR와 RD 명령어를 사용하여 빈 디렉터리(폴더) 일괄 삭제 방법
– 배치(Batch)에서 반복문으로 사용되는 FOR와 디렉터리를 삭제하는 RD 명령어를 사용하여 빈 디렉터리를 삭제하는 방법입니다.
– FOR의 사용 형태 : FOR %변수 IN (집합) DO 명령어
– 사용예 : FOR /f “usebackq” %d IN (`”dir /ad/b/s | sort /R”`) DO rd “%d”
– 설명
- /f “usebackq”는 옵션을 지정할 때 사용하면 “usebackq”는 공백을 포함한 파일 경로 양쪽에 큰 따옴표를 붙여줄 때 사용합니다.
- %d는 변수 이름이 됩니다.
- “dir /ad/b/s”에서 dir은 디렉터리에 있는 파일과 하위 디렉터리 목록을 보여주는 명령어이고, /ad는 디렉터리만 보여주고, /b는 머리말 정보나 요약이 없는 최소 포맷만 보여주고, /s는 하위 디렉터리까지 포함해서 보여주는 옵션입니다.
- “sort /R”에서 sort는 정렬을 위한 명령어이고, /R은 역순으로 보여주는 옵션입니다. 가장 깊은 하위 디렉터리부터 역으로 가져와야하기 때문에 sort /R이 필요합니다.
- rd “%d”는 변수 “%d“의 폴더를 삭제하는 명령어 입니다. rd 명령어는 빈 디렉터리만 삭제합니다. 파일이 존재하면 디렉터리는 삭제되지 않습니다.
– dir /ad/b/s | sort /R를 실행했을 때 결과는 다음 단락에서 확인해 보겠습니다.
– 참고로 명령프롬프트(cmd)의 명령어는 대소문자를 구분하지 않습니다.
– 만약 배치파일(bat)을 만들어 사용할 경우 “%d”를 “%%d“처럼 %를 2개 붙여주어야 합니다.
명령 프롬프트 배치 파일을 만들어 빈 디렉터리(폴더) 일괄 삭제 방법
– 다음 방법은 하위 디렉터리를 포함한 전체 디렉터리 목록을 만든 다음 RD 명령어로 빈 디렉터리를 일괄 삭제하는 방법입니다.
– 명령어 : DIR /AD /B /S | SORT /R > delempty.bat
– dir /ad /b /s | sort /r 명령어에 대한 설명은 앞의 단락에 나온 설명을 참고하세요.
– > delempty.bat에서 > 는 앞의 명령어 실행 결과를 화면으로 보여주지 않고 뒤에 있는 delempty.bat라는 텍스트 파일로 만들어지게 됩니다.
– dir 명령어로 만들어진 텍스트 파일을 메모장이나 워드패드 등으로 엽니다.
– 디렉터리 목록이 나와 있는 것을 볼 수 있습니다.
– [편집] – [바꾸기]를 선택해서 디렉터리 삭제 명령어인 “RD“을 디렉터리 목록 앞에 붙여줍니다.
– 목록의 맨 앞에 있는 D:\를 RD D:\로 모두 바꾸기 해주면 쉽게 “RD“을 붙일 수 있습니다.
– 아래 화면처럼 디렉터리 목록 앞에 RD가 모두 붙어 있으면 bat 파일 저장합니다.
– 이제 bat 파일을 더블클릭해서 실행만 해주면 빈 디렉터리(폴더)는 모두 삭제됩니다.
– 참고로 SORT /R을 해 줌으로써 가장 끝에 있는 하위 디렉터리부터 차례로 상위 디렉터리로 목록이 만들어진 것을 확인할 수 있습니다.
– RD 명령어는 빈 디렉터리를 삭제하는 명령어 입니다. 따라서 하위 디렉터리에서 상위 디렉터리로 올라오면서 디렉터리를 역순으로 삭제해야 제대로 삭제가 됩니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^