2012-03-27 21 views
8

Kullanıcı tarafından belirtilen kök dizinin altında bulunan tüm boş alt dizinleri listeleyen bir windows toplu iş dosyası oluşturmak istiyorum.Windows toplu iş dosyasını kullanarak tüm boş dizinleri nasıl listeleyebilirim?

Aynı konuda herhangi bir kimse yardım edebilir mi?

+0

Kontrol Bu tartışma: [ "Nasıl boş dizinleri listelemek için"] (http://groups.google.com/group/alt.msdos.batch.nt/browse_thread/thread/eec723b8096005b5/6416b835f5fca5d1?pli=1) –

+0

[MarkEmptyDirs] (https://code.google.com/p/markemptydirs/) adında bir araç olduğunu öğrendim. İşte örnek kullanım sözdizimi: MarkEmptyDirs.exe -d -v C: \ Bazı \ Dir –

cevap

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

Yukarıdaki çözüm Gizli klasörleri yoksayar. FOR ile birlikte/D ve/R seçeneklerinin her zaman bir sorunla karşılaşmamasına rağmen, bu nedenle etiketli olduğu söylendi.


@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 Gizli klasörler içerecektir İÇİN kaçınır 2 çözüm. Ancak, klasör adlarının Unicode içermesi durumunda başarısız olabileceğine inanıyorum.

+0

Ne [dir/a/b "%% ~ fA" 2> nul | findstr "^"> nul] bu demek? Neden "^" karakterini bulmaya çalıştığını anlamıyorum? –

+2

@WillHuang - '^' karakterini aramıyorum, aslında herhangi bir çizgiyle eşleşen ilkel bir düzenli ifade. '^ Karakteri bir çizginin başlangıcını temsil eder. '||' operatörü koşullu olarak "echo %% ~ fA" işlevini yalnızca FINDSTR başarısız olduğunda çalıştırır; bu, hiçbir satır bulunmadığında dizinin boş olduğu anlamına gelir. – dbenham

+0

Anladım. Şimdi anlıyorum. Paylaşım için teşekkürler! :) –

İlgili konular