쥔장에겐 완전 사랑하는 사람이 있어요 ^-^♡


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:\")

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

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Keizwer Keiz

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절


카테고리

:: Keiz Story :: (349)
TechNical (197)
Another (145)
ENG, JPN Lang. (7)

Statistics Graph
Total : 506,247
Today : 5 Yesterday : 57

달력

«   2017/06   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

Google

글 보관함

0
hit counter