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

wxyz\TemporaryFiles  
acbd\TemporaryFiles

आदि। मैंने निम्नलिखित कोशिश की है:

for /d %%i in (X:\Company\Projects\*) do cd TemporaryFiles && del /f /s /q %%i\*.* 

मेरे पास मेरा वाक्यविन्यास गलत होना चाहिए और कुछ मदद की सराहना करेंगे - धन्यवाद।

0
CAD-wiz 2 अप्रैल 2017, 19:04

2 जवाब

सबसे बढ़िया उत्तर

आपके कोड में मुख्य समस्या यह है कि एक बार cd निष्पादित हो जाने के बाद, क्योंकि इसे वापस नहीं किया जाता है, शेष cd संचालन गलत स्थान पर निष्पादित होते हैं।

के साथ प्रयास करें

for /d %%i in ("X:\Company\Projects\*") do (
    pushd "%%~fi\TemporaryFiles" && (
        rmdir . /s /q
        popd
    )
)

यानी, Projects फोल्डर के अंदर मौजूद हर फोल्डर के लिए मौजूदा एक्टिव डायरेक्टरी को फोल्डर + सबफोल्डर TemporaryFiles में बदलें और अंदर की कोई भी चीज हटा दें। एक बार हो जाने के बाद, निर्देशिका परिवर्तन को वापस लाएं और अगले फ़ोल्डर के साथ जारी रखें

2
MC ND 2 अप्रैल 2017, 19:27

सरल:

for /d %%i in ("X:\Company\Projects\*") do del /f /s /q "%%i\TemporaryFiles\*.*"

यदि कुछ निर्देशिकाओं में TemporaryFiles फ़ोल्डर नहीं है, तो एक त्रुटि संदेश दिखाया जाता है। आप अंत में 2>nul भाग सहित ऐसे संदेश को दबा सकते हैं।

1
Aacini 2 अप्रैल 2017, 23:37