Windows에서 빈 폴더를 자동으로 제거하는 방법

시간이 지남에 따라 수백 개의 빈 폴더와 정크 파일이 하드 디스크를 차지할 수 있습니다. 정크 파일은 디스크 공간을 차지하고 디스크 정리 또는 저장소 설정을 사용하여 정리할 수 있지만 빈 디렉토리는 남아 있습니다.

빈 폴더는 디스크 공간을 차지하지 않지만 데이터를보다 잘 정리하기 위해 가끔씩 정리할 수 있습니다.

이 문서에서는 컴퓨터에서 빈 폴더를 찾아 제거하는 다양한 방법에 대해 설명합니다.

Windows에서 빈 폴더를 찾아서 제거하는 방법?

빈 폴더 또는 디렉토리는 파일이나 하위 디렉토리가없는 것입니다. 빈 폴더는 디스크 공간을 차지하지 않지만 너무 많으면 번거로울 수 있습니다. 찾아서 제거하려면 아래 방법 중 하나를 사용하십시오.

중요 : 전체 시스템 드라이브에서 빈 폴더를 재귀 적으로 삭제하기 위해 자동화 된 도구 또는 배치 파일을 실행하는 것은 일반적으로 권장되지 않습니다. 필수 프로그램이 누락 된 경우 일부 프로그램이 작동하지 않고 이상한 오류가 발생할 수 있기 때문입니다. 항상 그렇듯이 표준 경고가 적용됩니다. 파일 시스템 또는 Windows 레지스트리를 조작하기 전에 외부 드라이브에 적절한 백업을 작성하십시오.

관련 : Windows의 폴더에서 재귀 적으로 0 바이트 파일 찾기 및 삭제

깔끔한 GUI 도구부터 시작하여 기본 명령 줄 및 스크립팅 방법을 살펴 보겠습니다.

1.“빈 파일 찾기 폴더”유틸리티를 사용하여 빈 폴더를 제거하십시오.

빈 파일 찾기 -n- 폴더는 폴더 트리 아래에서 빈 파일 (0 바이트)과 빈 폴더를 재귀 적으로 찾아서 삭제할 수있는 훌륭한 도구입니다.

Ashisoft.com에서 빈 파일 -n- 폴더 찾기 (600KB 설치 프로그램)를 다운로드하십시오.

폴더를 선택하고 지금 검색을 클릭하십시오.

이 도구는 빈 파일과 폴더를 별도의 탭에 나열합니다.

모든 폴더 표시 를 클릭 한 다음 폴더 삭제 를 클릭합니다.

마찬가지로 선택한 폴더 트리에서 0 바이트 파일을 삭제하려면 빈 파일 탭을 클릭하십시오.

Ashisoft.com에는 다른 멋진 도구가 있습니다.


"for"및 "rd"명령을 사용하여 빈 폴더를 제거합니다.

rdfor 명령 프롬프트 내부 명령 for 사용하여 폴더 목록을 열거하고 빈 폴더를 삭제할 수 있습니다.

  1. Shift 키를 누른 상태에서 폴더를 마우스 오른쪽 버튼으로 클릭하고 여기에서 명령 창 열기를 클릭하십시오. 이렇게하면 현재 폴더 위치에서 명령 프롬프트가 열리고 콘솔에서도 확인할 수 있습니다. 참고 : 빈 하위 폴더를 찾아 제거해야하는 정확한 상위 폴더 경로에서 다음 명령을 실행해야합니다.
  2. 명령 프롬프트에서 원하는 디렉토리에 있으면 다음 명령 줄을 실행하십시오.
     / f "delims ="% i in ( 'dir / s / b / ad ^ | sort / r') rd "% i"2> NUL 

    그러면 중첩 된 빈 폴더를 포함하여 기본 폴더 경로에서 하위 디렉토리의 모든 빈 디렉토리가 삭제됩니다.

위의 명령 줄은 블로그 The Old New Thing을 통해 Microsoft의 Raymond Chen이 제공 한 것입니다. 이 게시물에서는 Raymond의 명령 줄이 약간 수정되어 공백이 포함 된 폴더 이름도 삭제되었습니다.

명령은 어떻게 작동합니까

위의 명령은 현재 기본 경로의 모든 하위 디렉토리를 (재귀 적으로) 나열하고 목록 ( sort /r )을 역순으로 정렬합니다. 역순 정렬은 열거가 상향식으로 이루어 지도록하는 것입니다. 상위 디렉토리를 제거하기 전에 서브 디렉토리를 제거해야하므로 이는 빈 디렉토리를 삭제하는 데 중요합니다.

그런 다음 RD 명령을 사용하여 디렉토리 목록을 역순으로 제거하려고 시도합니다. 디렉토리가 비어 있지 않으면 다음 디렉토리로 진행합니다. 2>NUL 명령은“디렉토리가 비어 있지 않음”출력 텍스트가 표시되지 않도록합니다.

위의 방법의 유일한 단점은 빈 폴더를 삭제하지 않고 찾으려면 유용하지 않다는 것입니다. 빈 폴더 목록을 찾으려면 아래 단락의 명령 줄을 사용하거나이 문서에 설명 된 다른 방법을 따르십시오.

빈 폴더를 찾지 만 삭제하지 마십시오

빈 폴더를 삭제하지 않고 찾으려면 다음 명령 줄 구문을 사용하십시오.

 (.)의 / r "D : \ uploads \ 2019"/ d % F에 대해 @dir / b "% F"| findstr "^"> nul || 에코 % ~ fF 

빈 디렉토리 목록이 포함 된 출력이 표시됩니다.

다음과 같이 빈 중첩 폴더가 있다고 가정 해 봅시다.

 C : \ 1 └───2 └───3 └───4 

위 명령을 실행하면 가장 빈 폴더 만 표시됩니다 → 4 . 기술적으로 하위 폴더 나 파일이 있으면 폴더를 비워 둘 수 없기 때문에 정확합니다.


3. Robocopy 명령을 사용하여 빈 폴더 찾기 및 제거

Robocopy는 강력한 기능을 갖춘 강력한 내장 파일 복사 도구입니다. 우리는 Windows에서 두 폴더의 내용 비교 기사에서 Robocopy를 다루었습니다.

몇 개의 하위 폴더가 비어있는 cars 라는 폴더가 있다고 가정 해 봅시다. Robocopy를 사용하여 빈 것을 삭제합니다.

여기서의 요령 은 Robocopy 이동 명령을 사용하여 소스와 대상 모두에 대해 정확히 동일한 폴더 경로를 전달하는 것입니다.

  1. 명령 프롬프트 창을 엽니 다
  2. 다음 명령을 입력하고 Enter 키를 누릅니다 :
     robocopy "d : \ 자동차 요금 \ cars" "d : \ 자동차 요금 \ cars"/ S / move 

    여기서 주목해야 할 가장 중요한 것은 소스 경로와 대상 경로가 (고의적으로) 동일 하다는 것입니다. /S 매개 변수는 빈 폴더를 "대상"경로로 이동하지 않도록 Robocopy에 지시합니다. 소스와 대상에 대해 동일한 경로를 언급했듯이 Robocopy는 /S 스위치가 있기 때문에 빈 폴더를 삭제합니다.

선택한 경로의 빈 폴더가 지워집니다.

빈 폴더를 찾고 삭제하지 않겠습니까?

Robocopy와 함께 /L (목록 전용) 명령 줄 인수를 사용하여 실제 복사 / 이동 작업을 수행하는 대신 드라 이런 만 수행 할 수 있습니다.

/L :: 목록 만 – 파일을 복사, 타임 스탬프 또는 삭제하지 않습니다.

/MOVE :: 파일 및 디렉토리 이동 (복사 후 소스에서 삭제)

/S :: 하위 디렉토리는 복사하지만 비어 있지는 않습니다.

열의 파일 수가 폴더 경로를 듣는 것을 볼 수 있습니다. 0 은 해당 폴더에 파일이 없음을 의미합니다.

이 명령을 실제 테스트에 적용합시다!

%APPDATA% 폴더는 더 이상 사용되지 않는 프로그램에 의해 추가 된 빈 폴더로 가득합니다.

정리하기 전에 폴더 속성에 표시된 것처럼 Appdata \ Roaming 폴더에는 681 개의 폴더가있었습니다.

명령 프롬프트를 열고 다음 명령을 실행했습니다.

 robocopy "% appdata %" "% appdata %"/ S / MOVE 

참고 : % appdata % 환경 변수는 C:\Users\{username}\AppData\Roaming 폴더로 변환됩니다. Robocopy와 함께 전체 폴더 경로 또는 이에 상응하는 환경 변수를 사용할 수 있습니다. 어느 쪽이든 괜찮습니다.

%APPDATA% 폴더와 하위 폴더에서 94 개의 빈 폴더를 성공적으로 제거했습니다.

편집자 주 : 통계 섹션 아래의 명령 행 출력에서 ​​다음 오류가 발생했습니다.

“오류 32 (0x00000020) 원본 디렉토리 C : \ Users \ ramesh \ AppData \ Roaming \ 삭제 중

프로세스가 다른 프로세스에서 파일을 사용하고 있기 때문에 파일에 액세스 할 수 없습니다. "

Robocopy가 % APPDATA % 디렉토리를 이동 ( /MOVE )하도록 지시 했으므로 도구가 대상으로 "이동"한 후 "소스"폴더를 정리하려고했습니다. % APPDATA %는 특수 폴더이므로 사용할 수 없습니다. 특수 폴더가 아닌 디렉토리 경로를 사용할 때 오류가 발생하지 않습니다. 모든 것이 잘 진행됨에 따라 단순히 (사소한) 오류를 무시했습니다.


4. PowerShell을 사용하여 빈 폴더 찾기 및 제거

다음 PowerShell 명령 줄은 지정된 기본 폴더 아래에있는 빈 폴더를 재귀 적으로 삭제합니다.

  1. PowerShell을 시작하고 다음 명령을 입력하십시오.
     (gci "folderpath"-r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | 항목 제거 

    "폴더 경로"를 기본 폴더 위치로 바꾸십시오. 예를 들어 로밍 폴더를 여기에 지정합니다.

     (gci "C : \ Users \ ramesh \ AppData \ Roaming"-r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | 항목 제거 

    이렇게하면 내 %appdata% 폴더 아래의 빈 하위 폴더가 모두 재귀 적으로 삭제되고 오류가 발생하지 않는 한 출력이 표시되지 않습니다.

위의 PowerShell 명령은 마지막 수준의 빈 중첩 폴더 만 지 웁니다. 예를 들어 다음과 같이 빈 중첩 폴더가 있다고 가정 해 봅시다.

 C : \ 1 └───2 └───3 └───4 

위 명령을 실행하면 가장 빈 폴더가 지워집니다 → 4 . 스크립트를 다시 실행하면 다른 수준의 중첩 폴더 ( 3 ) 등이 지워집니다.

Svendsen Tech PowerShell Wiki의 PowerShell 스크립트를 사용하여 중첩 된 폴더로 작업 할 수 있습니다.

또는 다음 방법 인 Windows 스크립팅 솔루션을 사용하여 중첩 된 폴더를 포함한 모든 빈 폴더를 재귀 적으로 지울 수 있습니다.

빈 폴더를 찾았지만 삭제하고 싶지 않습니까?

빈 폴더 목록을 가져 오려면 삭제하고 싶지 않습니까? 대신이 명령 행 예제를 사용하십시오.

 (gci "C : \ Users \ ramesh \ AppData \ Roaming"-r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | 이름 선택 | 아웃 그리드 뷰 

이 명령은 그리드보기 컨트롤의 전체 경로가있는 빈 폴더 목록을 출력합니다.

팁 : 격자보기에서 Ctrl + C를 눌러 모두를 선택하고 선택을 복사 할 수 있습니다.

폴더를 삭제하는 명령을 실행하기 전에 목록을 미리 보는 것이 좋습니다.


5. Windows 스크립팅을 사용하여 빈 폴더 찾기 및 제거

Microsoft 직원 Jeremy Jameson은 빈 폴더를 재귀 적으로 삭제하는 VBScript를 작성했습니다. 스크립트에 더 많은 줄을 추가하여 빈 읽기 전용 디렉토리를 강제로 삭제하고 빈 폴더의 집계 목록을 출력합니다. 또한 해당 오류 설명과 함께 삭제할 수없는 빈 폴더 목록을 출력합니다.

스크립트는 하위 폴더에서 중첩 된 빈 디렉토리를 삭제할 수 있습니다.

 옵션 명시 적 If (WScript.Arguments.Count 1) 그런 다음 WScript.Echo ( "사용 : cscript DeleteEmptyFolders.vbs {path}") WScript.Quit (1) Dim 인 경우 종료 strPath : strPath = WScript.Arguments (0) Dim fso : fso = CreateObject ( "Scripting.FileSystemObject") Dim objFolder 설정 : objFolder = fso.GetFolder (strPath) Dim sDelList, sDelErr, sFolderPath Dim iCnt iCnt = 0 DeleteEmptyFolders objFolder 하위 DeleteEmptyFolds 하위 폴더에 오류 표시기 (폴더) 폴더의 각 하위 폴더에 대한 정션 등에 액세스 할 때 폴더의 하위 폴더 DeleteEmptyFolders 하위 폴더 다음 On 오류 Goto 0 경우 folder.SubFolders.Count = 0 및 folder.Files.Count = 0 인 경우 sFolderPath = 폴더 .Path On Error Resume Next fso.DeleteFolder 폴더 .Path, True Err.number 0이면 sDelErr = sDelErr & Err.number & ":"& Err.description & _ vbCrLf & sFolderPath & vbCrLf & vbCrLf 다른 sDelList = sDelList & vbCrLf & sFolderPath t = iCnt + 1 오류 발생시 종료 Goto 0 종료 종료 경우 종료 sDelList = ""And sDelErr = ""그리고 WScript.Echo ""& _ "" ""& strPath & "" ""아래에 빈 폴더가 없습니다. & "tree"WScript.Quit End sDelList ""이면 sDelList = "빈 폴더 목록이 삭제됨"& vbCrLf _ & String (38, "-") & vbCrLf & sDelList & vbCrLf & _ vbCrLf & "Total :"& iCnt & "폴더가 삭제되었습니다." sDelErr ""인 경우 sDelErr = "이 폴더를 삭제할 수 없습니다"& _ vbCrLf & String (45, "-") & vbCrLf & sDelErr WScript.Echo sDelList & vbCrLf & vbCrLf & sDelErr 

위 코드를 메모장에 복사하고 파일 확장자를 .vbs ( 예 : delempty.vbs)로 저장하십시오.

다음 두 가지 방법으로 스크립트를 실행할 수 있습니다.

다음을 실행하여 명령 프롬프트를 통해 :

 cscript.exe delempty.vbs "folder_path" 

GUI를 통해 다음을 실행하십시오.

 wscript.exe delempty.vbs "folder_path" 

보내기 메뉴를 통해

SendTo 폴더에 스크립트 바로 가기를 작성하고 이름을 Delete Empty Folders 로 지정할 수 있습니다.

그런 다음 빈 하위 폴더를 반복적으로 삭제하려는 폴더를 마우스 오른쪽 버튼으로 클릭하고 → 보내기를 클릭하고 → 보내기 메뉴에서 빈 폴더 삭제를 클릭합니다.

빈 폴더 목록과 삭제 된 총계 및 각각의 오류 코드가 표시된 상태에서 삭제할 수없는 폴더가 표시됩니다.

그게 다야! Windows에서 빈 폴더를 제거하는 다른 방법을 알고 있다면 아래 주석 섹션에서 알려주십시오.

관련 기사