मैं एक दोहराए जाने वाले विलोपन कार्य को स्क्रिप्ट करने का एक तरीका ढूंढ रहा हूं। हमारे पास एक मानक निर्देशिका टेम्प्लेट है जिसका उपयोग शीर्ष स्तर के नाम बदलकर बार-बार किया जाता है। मैं फ़ाइलों को हटाने के लिए इन सभी निर्देशिकाओं में नामित फ़ोल्डर को लक्षित करना चाहता हूं उदा।
wxyz\TemporaryFiles
acbd\TemporaryFiles
आदि। मैंने निम्नलिखित कोशिश की है:
for /d %%i in (X:\Company\Projects\*) do cd TemporaryFiles && del /f /s /q %%i\*.*
मेरे पास मेरा वाक्यविन्यास गलत होना चाहिए और कुछ मदद की सराहना करेंगे - धन्यवाद।
2 जवाब
आपके कोड में मुख्य समस्या यह है कि एक बार cd
निष्पादित हो जाने के बाद, क्योंकि इसे वापस नहीं किया जाता है, शेष cd
संचालन गलत स्थान पर निष्पादित होते हैं।
के साथ प्रयास करें
for /d %%i in ("X:\Company\Projects\*") do (
pushd "%%~fi\TemporaryFiles" && (
rmdir . /s /q
popd
)
)
यानी, Projects
फोल्डर के अंदर मौजूद हर फोल्डर के लिए मौजूदा एक्टिव डायरेक्टरी को फोल्डर + सबफोल्डर TemporaryFiles
में बदलें और अंदर की कोई भी चीज हटा दें। एक बार हो जाने के बाद, निर्देशिका परिवर्तन को वापस लाएं और अगले फ़ोल्डर के साथ जारी रखें
सरल:
for /d %%i in ("X:\Company\Projects\*") do del /f /s /q "%%i\TemporaryFiles\*.*"
यदि कुछ निर्देशिकाओं में TemporaryFiles
फ़ोल्डर नहीं है, तो एक त्रुटि संदेश दिखाया जाता है। आप अंत में 2>nul
भाग सहित ऐसे संदेश को दबा सकते हैं।
संबंधित सवाल
नए सवाल
batch-file
एक बैच फ़ाइल एक पाठ फ़ाइल होती है जिसमें कमांड की एक श्रृंखला होती है जिसे MS-DOS, IBM OS / 2 या Microsoft Windows सिस्टम पर कमांड दुभाषिया द्वारा निष्पादित किया जाता है।