2012-03-27 4 views
8

사용자 지정 루트 디렉터리 아래에있는 모든 빈 하위 디렉터리를 나열하는 Windows 배치 파일을 만들려고합니다.Windows 배치 파일을 사용하여 모든 빈 디렉토리를 나열하는 방법은 무엇입니까?

누구와도 동일하게 도움이 될 수 있습니까?

+0

[빈 디렉토리를 나열하는 방법] (http://groups.google.com/group/alt.msdos.batch.nt/browse_thread/thread/eec723b8096005b5/6416b835f5fca5d1?pli=1) –

+0

나는 [MarkEmptyDirs] (https://code.google.com/p/markemptydirs/)라는 도구가 있다는 것을 알게되었습니다. 다음은 샘플 사용법 구문입니다. MarkEmptyDirs.exe -d -v C : \ Some \ Dir –

답변

11
@echo off 
for /d /r %1 %%A in (.) do (
    dir /a /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA 
) 

위의 해결 방법은 숨겨진 폴더를 무시합니다. 나는 또한/D와/R 옵션을 FOR와 함께 사용하면 문제가 생겨 본 적이 없지만 도청되었다고 들었습니다.


@echo off 
dir /a /b %1 2>nul | findstr "^" >nul || echo %%~fA 
for /f "eol=: delims=" %%A in ('dir /s /ad /b %1') do (
    dir /a /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA 
) 

/D/R 숨겨진 폴더를 포함 피하고, 제 2 회 솔루션입니다. 하지만 폴더 이름에 유니 코드가 있으면 실패 할 수 있다고 생각합니다.

+0

[dir/a/b "%% ~ fA"2> nul | findstr "^">이 뜻입니까? 왜 "^"문자를 찾으려고했는지 이해가 안 되니? –

+2

@WillHuang -'^ '문자를 찾고 있지는 않습니다. 실제로는 어떤 행과도 일치하는 기본 정규 표현식입니다. '^'문자는 행의 시작을 나타냅니다. '||'연산자는 FINDSTR이 실패한 경우에만 조건 적으로'echo %% ~ fA'를 실행하는데, 이는 라인이 발견되지 않았을 때, 즉 디렉토리가 비어 있음을 의미합니다. – dbenham

+0

나는 본다. 지금은 이해. 공유 해줘서 고마워! :) –

관련 문제