본문 바로가기
TechNical/WMI

WMI를 이용해서 빈 폴더 찾아 내기

by 강멍멍이 2008. 2. 27.
반응형

WMI를 이용해서 폴더내에 내용이 없는 껍대기만 있는 폴더, 즉 빈 폴더를 찾아 보도록 하겠습니다.
(말이 좀 어렵다 -_-;;;)

여기서 찾는 비었있는 폴더의 기준은
파일의 존재 여부와 상관없이 폴더의 사이즈가 0 인 것을 말 합니다.
예를 들어서 0바이트 짜리 텍스트 문서가 폴더 내에 존재 한다고 해서 이 폴더가
비어있는 폴더에서 제외되는 것은 아닙니다.
파일이 존재 하지만 사이즈가 0 이면 폴더 사이즈도 0 인 것입니다.

코드 보겠습니다~ 짧아서 좋습니다. ㅎㅎ

[ FIND_EMPTY_FOLDER.VBS ]

On Error Resume Next

Set FSO = CreateObject("Scripting.FileSystemObject")
ShowSubFolders FSO.GetFolder("D:\")

Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
        If Subfolder.Size = 0 Then  
           Wscript.Echo Subfolder.Path
        End If
        ShowSubFolders Subfolder
    Next
End Sub


# Desc.
위의 스크립트는 D 루트 드라이브 내에서 부터 하위 디렉토리까지 모두 검색을 합니다.
아... 저번 포스팅에 쓰려고 했던 하위 폴더 탐색이 여기에 나오는 군요~
재귀호출 형식으로 하위 폴더까지 탐색하는 방법을 사용하였습니다.

Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
        If Subfolder.Size = 0 Then  
           Wscript.Echo Subfolder.Path
        End If
        ShowSubFolders Subfolder
    Next
End Sub

파란색으로 표시한 부분이 재귀호출로 하위 폴더 탐색하는 핵심입니다.
................. 거의 다 군요 -_-;

아무튼.. -_-;;; 해서~ 폴더 사이즈가 0 이냐를 확인하고 해당 폴더의 경로를 표시해 줍니다.
볼 것도 없이 빈 껍다구 폴더는 필요 없다하면 Wscript.Echo 문 대신에 아래의 명령을 주시면 삭제가 됩니다.

Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
         If Subfolder.Size = 0 Then  
           
Subfolder.delete
         End If
         ShowSubFolders Subfolder
    Next
End Sub

그러면 찾기와 동시에 삭제를 합니다.

검색 하고 싶은 루트 폴더를 변경하고자 한다면 (이건.. 그냥 봐도 알겠지만 ;;;)

ShowSubFolders FSO.GetFolder("D:\")

이 부분을 수정해 주시면 됩니다.

반응형

댓글