Windows에서 빈 폴더를 자동으로 제거하는 방법
시간이 지남에 따라 수백 개의 빈 폴더와 정크 파일이 하드 디스크를 차지할 수 있습니다. 정크 파일은 디스크 공간을 차지하고 디스크 정리 또는 저장소 설정을 사용하여 정리할 수 있지만 빈 디렉토리는 남아 있습니다.
빈 폴더는 디스크 공간을 차지하지 않지만 데이터를보다 잘 정리하기 위해 가끔씩 정리할 수 있습니다.
이 문서에서는 컴퓨터에서 빈 폴더를 찾아 제거하는 다양한 방법에 대해 설명합니다.
Windows에서 빈 폴더를 찾아서 제거하는 방법?
빈 폴더 또는 디렉토리는 파일이나 하위 디렉토리가없는 것입니다. 빈 폴더는 디스크 공간을 차지하지 않지만 너무 많으면 번거로울 수 있습니다. 찾아서 제거하려면 아래 방법 중 하나를 사용하십시오.
중요 : 전체 시스템 드라이브에서 빈 폴더를 재귀 적으로 삭제하기 위해 자동화 된 도구 또는 배치 파일을 실행하는 것은 일반적으로 권장되지 않습니다. 필수 프로그램이 누락 된 경우 일부 프로그램이 작동하지 않고 이상한 오류가 발생할 수 있기 때문입니다. 항상 그렇듯이 표준 경고가 적용됩니다. 파일 시스템 또는 Windows 레지스트리를 조작하기 전에 외부 드라이브에 적절한 백업을 작성하십시오.
관련 : Windows의 폴더에서 재귀 적으로 0 바이트 파일 찾기 및 삭제
깔끔한 GUI 도구부터 시작하여 기본 명령 줄 및 스크립팅 방법을 살펴 보겠습니다.
1.“빈 파일 찾기 폴더”유틸리티를 사용하여 빈 폴더를 제거하십시오.
빈 파일 찾기 -n- 폴더는 폴더 트리 아래에서 빈 파일 (0 바이트)과 빈 폴더를 재귀 적으로 찾아서 삭제할 수있는 훌륭한 도구입니다.
Ashisoft.com에서 빈 파일 -n- 폴더 찾기 (600KB 설치 프로그램)를 다운로드하십시오.
폴더를 선택하고 지금 검색을 클릭하십시오.
이 도구는 빈 파일과 폴더를 별도의 탭에 나열합니다.
모든 폴더 표시 를 클릭 한 다음 폴더 삭제 를 클릭합니다.
마찬가지로 선택한 폴더 트리에서 0 바이트 파일을 삭제하려면 빈 파일 탭을 클릭하십시오.
Ashisoft.com에는 다른 멋진 도구가 있습니다.
"for"및 "rd"명령을 사용하여 빈 폴더를 제거합니다.
및 rd
에 for
명령 프롬프트 내부 명령 for
사용하여 폴더 목록을 열거하고 빈 폴더를 삭제할 수 있습니다.
- Shift 키를 누른 상태에서 폴더를 마우스 오른쪽 버튼으로 클릭하고 여기에서 명령 창 열기를 클릭하십시오. 이렇게하면 현재 폴더 위치에서 명령 프롬프트가 열리고 콘솔에서도 확인할 수 있습니다. 참고 : 빈 하위 폴더를 찾아 제거해야하는 정확한 상위 폴더 경로에서 다음 명령을 실행해야합니다.
- 명령 프롬프트에서 원하는 디렉토리에 있으면 다음 명령 줄을 실행하십시오.
/ 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를 사용하여 빈 것을 삭제합니다.
- 명령 프롬프트 창을 엽니 다
- 다음 명령을 입력하고 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 명령 줄은 지정된 기본 폴더 아래에있는 빈 폴더를 재귀 적으로 삭제합니다.
- 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
다음 두 가지 방법으로 스크립트를 실행할 수 있습니다.
다음을 실행하여 명령 프롬프트를 통해 :
cscript.exe delempty.vbs "folder_path"
GUI를 통해 다음을 실행하십시오.
wscript.exe delempty.vbs "folder_path"
보내기 메뉴를 통해
SendTo 폴더에 스크립트 바로 가기를 작성하고 이름을 Delete Empty Folders 로 지정할 수 있습니다.
그런 다음 빈 하위 폴더를 반복적으로 삭제하려는 폴더를 마우스 오른쪽 버튼으로 클릭하고 → 보내기를 클릭하고 → 보내기 메뉴에서 빈 폴더 삭제를 클릭합니다.
빈 폴더 목록과 삭제 된 총계 및 각각의 오류 코드가 표시된 상태에서 삭제할 수없는 폴더가 표시됩니다.
그게 다야! Windows에서 빈 폴더를 제거하는 다른 방법을 알고 있다면 아래 주석 섹션에서 알려주십시오.