2010-01-11 8 views
8

उदाहरण के लिए, आपके पास बैच फ़ाइल में नाम बदलें कमांड है, और आप उस फ़ाइल को वर्तमान निर्देशिका और सभी उप-निर्देशिकाओं पर निष्पादित करना चाहते हैं।विंडोज बैच कमांड को दोबारा कैसे निष्पादित करें?

+0

क्या आपके पास एक ठोस उदाहरण है? –

+1

इसके बजाय PowerShell का उपयोग करें। :-) –

+0

यह भी देखें: http://stackoverflow.com/a/25381530/99777 – joeytwiddle

उत्तर

16

माना कि आपका बैच myrename.cmd की तरह कुछ के नाम पर है, तो आप आसानी से निम्न कर सकते हैं:

call myrename.cmd 
for /r /d %%x in (*) do (
    pushd "%%x" 
    call myrename.cmd 
    popd 
) 

पहली पंक्ति वर्तमान निर्देशिका के लिए यह चलेगा, for पाश सब कुछ खत्म हो रिकर्सिवली (/r) पुनरावृति जाएगा निर्देशिका (/d) और कोष्ठक में भाग निष्पादित करें। हम उनके अंदर क्या करते हैं, उस निर्देशिका को उस निर्देशिका में बदलते हैं, जिसे हम वर्तमान में pushd के साथ फिर से चालू कर रहे हैं - जिसमें अच्छी संपत्ति है जिसे आप popd के साथ उस निर्देशिका में बदल सकते हैं -और फिर आदेश चलाएं, जो निर्देशिका में चलाया जाएगा हम बस स्विच कर दिया।

यह मानता है कि बैच पथ में कहीं स्थित है। यदि यह झूठ बोलने के लिए नहीं होता है और झूठ बोलता है तो आप

"%~dp0myrename.cmd" 
+0

आपको बहुत धन्यवाद –

+0

आखिरी बिट का क्या अर्थ है? –

+0

@VirgilIerubino: आखिरी बिट क्या? '% ~ डीपी 0' वाला हिस्सा? स्पष्टीकरण के लिए 'मदद' देखें। – Joey

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