2012-03-27 12 views
8

मैं एक विंडोज बैच फ़ाइल बनाना चाहता हूं जो उपयोगकर्ता निर्दिष्ट रूट निर्देशिका के तहत मौजूद सभी खाली उप-निर्देशिका सूचीबद्ध करता है।विंडोज बैच फ़ाइल का उपयोग कर सभी खाली निर्देशिकाओं को कैसे सूचीबद्ध करें?

क्या कोई इसके बारे में मदद कर सकता है?

+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 सी: \ कुछ \ Dir –

उत्तर

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

उपर्युक्त समाधान छिपे हुए फ़ोल्डर्स को अनदेखा करता है। मुझे यह भी बताया गया है कि 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 
) 

2 समाधान से बचा जाता है कि के लिए/डी/आर छिपे हुए फ़ोल्डर्स शामिल होंगे। लेकिन मेरा मानना ​​है कि अगर फ़ोल्डर नामों में यूनिकोड होता है तो यह असफल हो सकता है।

+0

क्या है [dir/a/b "%% ~ fA" 2> nul | findstr "^"> nul] इसका मतलब है? मुझे समझ में नहीं आया कि आपने "^" चरित्र को खोजने का प्रयास क्यों किया? –

+2

@ विल्लहुआंग - मैं '^' चरित्र की तलाश नहीं कर रहा हूं, यह वास्तव में एक आदिम नियमित अभिव्यक्ति है जो किसी भी पंक्ति से मेल खाती है। '^' वर्ण एक रेखा की शुरुआत का प्रतिनिधित्व करता है। '||' ऑपरेटर सशर्त रूप से 'echo %% ~ fA' निष्पादित करता है अगर FINDSTR विफल हो गया, जो तब होता है जब कोई रेखा नहीं मिली, जिसका अर्थ है कि निर्देशिका खाली है। – dbenham

+0

मैं देखता हूं। मैं अब समझता हूँ। साझा करने के लिए धन्यवाद! :) –

संबंधित मुद्दे