क्या विंडोज़ पर RMDIR के लिए फ़ाइलों की सूची को पाइप करना संभव है?


9

मैं एक निश्चित अभिव्यक्ति से मेल खाते सभी निर्देशिकाओं को हटाने के लिए विंडोज कमांड प्रॉम्प्ट के लिए एक बैच फ़ाइल लिख रहा हूं।

मैं पहली बार DIRअभिव्यक्ति से मेल खाने वाली निर्देशिकाओं की एक सादे सूची को वापस करने के लिए उपयोग कर रहा हूं । मैं RMDIR कमांड में आउटपुट की प्रत्येक लाइन को इस तरह से पाइप करना चाहता हूं:

DIR *.delete /A:D /B /S | RMDIR /S /Q

हालाँकि उपरोक्त कमांड काम नहीं करता है। मुझे पूरी तरह से समझ में नहीं आता है कि यह क्यों काम नहीं करता है और जो कोई भी स्पष्टीकरण दे सकता है, उसका आभारी होगा।

जवाबों:


5

आप अपनी बैच फ़ाइल में निम्नलिखित का उपयोग कर सकते हैं:

FOR /f "tokens=*" %%a in ('dir *.delete /A:D /B /S') DO RMDIR /S /Q %%a

यह FORदिए गए कमांड के आउटपुट के माध्यम से कमांड का उपयोग करता है (इस मामले में dir *.delete /A:D /B /S, और लौटाए गए प्रत्येक आइटम के लिए यह डीओ स्टेटमेंट के साथ निर्दिष्ट कमांड को चलाएगा RMDIR /S /Q। आइटम को वेरिएबल द्वारा संदर्भित किया जाता है %%a

इसका कारण यह है कि यह केवल DIRआउटपुट को पाइप करने में काम नहीं करता RMDIRहै क्योंकि आप एक ही पैरामीटर के रूप में एक ही बार में पूरे आउटपुट (कई लाइनें) भेज रहे हैं RMDIRFORइस उत्पादन नीचे आदेश टूटता है, प्रत्येक आइटम के माध्यम से iterates और फिर भेजता है करने के लिए RMDIRएक के बाद एक।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.