दिलचस्प पोस्ट
मैं iPhone पर प्रोग्राम को एक छवि कैसे दिखाऊंगा? एडीटी अपडेट के बाद ClassNotFound अपवाद पायथन में सी-जैसे संरचनाएं एक वेबसाइट पर PHP स्क्रिप्ट से जावा क्लास फ़ाइल चलाएं Google क्लाउड मेसेजिंग – कभी-कभी नेटवर्क स्थिति बदल जाने तक संदेश प्राप्त नहीं होते मेरा उद्देश्य-सी सिंगलटन कैसा दिखता है? जीआईटी में "हमारा" और "उनकी" का सटीक अर्थ क्या है? सीतनिद्रा में होना: एक से एक आलसी लोडिंग, वैकल्पिक = गलत कैसे सी + + 11 में make_unique समारोह को लागू करने के लिए? जावा में स्ट्रिंग वाले स्ट्रिंग को कैसे पार्स करना और रूट नोड के मूल्य को पुनः प्राप्त करना है? IEnumerable में कोई गणना विधि नहीं है कैस्परजेएस / फेंटमोज एस एच पी एस पृष्ठ लोड नहीं करता है चित्र को दस्तावेज़ की निर्देशिका में सहेजना और ईमेल अनुलग्नक के लिए पुनः प्राप्त करना उपयोग किए जाने से पहले कार्य करने की आवश्यकता क्यों है? किसी सेवा द्वारा उपयोग की जाने वाली एक नेटवर्क ड्राइव को मैप करें

एक बीएटी फाइल में कई बीएटी फ़ाइलों को चलाने के लिए

मैं अपनी commit-build.bat निर्माण के हिस्से के रूप में अन्य। commit-build.bat फ़ाइलों को निष्पादित करने के लिए अपने commit-build.bat प्राप्त करने का प्रयास कर रहा हूं।

commit-build.bat की सामग्री:

 "msbuild.bat" "unit-tests.bat" "deploy.bat" 

यह काफी आसान लगता है, लेकिन commit-build.bat केवल सूची में पहला आइटम निष्पादित करता है ( msbuild.bat )।

मैंने प्रत्येक फाइल को अलग-अलग समस्याओं के साथ चलाया है

वेब के समाधान से एकत्रित समाधान "एक बीएटी फाइल में कई बीएटी फ़ाइलों को चलाने के लिए"

उपयोग

 call msbuild.bat call unit-tests.bat call deploy.bat 

कॉल का उपयोग नहीं करते समय, वर्तमान बैच फ़ाइल बंद हो जाती है और कहा बैच फ़ाइल निष्पादित हो रही है। यह शुरुआती एमएस-डॉस के दिनों में वापस अजीब व्यवहार है

अन्य सभी उत्तर सही हैं: कॉल का उपयोग करें उदाहरण के लिए:

  call "msbuild.bat" 

इतिहास

प्राचीन डॉस संस्करणों में बैच फ़ाइलों को पुन: क्रमबद्ध करने के लिए संभव नहीं था तब कॉल कमांड पेश किया गया था जिसे बैच फ़ाइल निष्पादित करने के लिए एक और सीएमडी खोल कहा गया था और जब समाप्त हो गया था तब फोनिंग सीएमडी खोल में वापस आ गया था।

जाहिर है बाद के संस्करणों में कोई अन्य सीएमडी खोल आवश्यक नहीं था।

शुरुआती दिनों में कई बैच फ़ाइलें इस तथ्य पर निर्भर करती थीं कि एक बैच फ़ाइल कॉल करने से कॉलिंग बैच फ़ाइल पर वापस नहीं आएगा। अतिरिक्त वाक्य-रचना के बिना उस व्यवहार को बदलने से बैच मेनू सिस्टम (मेनू संरचनाओं के लिए बैच फ़ाइलों का उपयोग) जैसे कई प्रणालियों को तोड़ दिया जाएगा।

माइक्रोसॉफ्ट के साथ कई मामलों में, पिछड़े संगतता इसलिए इस व्यवहार के लिए कारण है।

टिप्स

यदि आपकी बैच फ़ाइलों के नाम पर रिक्त स्थान हैं, तो नाम के चारों ओर उद्धरण चिह्नों का उपयोग करें:

 call "unit tests.bat" 

वैसे: यदि आपके पास बैच फ़ाइलों के सभी नाम नहीं हैं, तो आप इसके लिए भी इसका उपयोग कर सकते हैं: (बैच फ़ाइल कॉल्स के सही क्रम की गारंटी नहीं देता है, फ़ाइल सिस्टम के क्रम का अनुसरण करता है)

 FOR %x IN (*.bat) DO call "%x" 

कॉल के बाद त्रुटि स्तर पर भी प्रतिक्रिया कर सकते हैं। उपयोग

 exit /B 1 # or any other integer value in 0..255 

एक त्रुटि स्तर वापस करने के लिए 0 सही निष्पादन को दर्शाता है। कॉलिंग बैच फ़ाइल में आप का उपयोग करके प्रतिक्रिया कर सकते हैं

 if errorlevel neq 0 <batch command> 

यदि आप एक पुराने Windows तो NT4 / 2000 / XP के सभी त्रुटि स्तर 1 और अधिक से अधिक को पकड़ने के लिए त्रुटि स्तर 1 का उपयोग करें।

बैच फ़ाइल के प्रवाह को नियंत्रित करने के लिए, गोटो है 🙁

 if errorlevel 2 goto label2 if errorlevel 1 goto label1 ... :label1 ... :label2 ... 

जैसा कि अन्य लोगों ने बताया: बैच फ़ाइलों को बदलने के लिए सिस्टम बनाने पर एक नज़र डालें।

अगर हम कई कमांड प्रॉम्प्ट खोलना चाहते हैं तो हम shd का उपयोग करते हैं

 start cmd /k 

/k : अनिवार्य है जो निष्पादित होगा।

कई कमांड प्रक्षेपणों को लॉन्च किया जा सकता है

 start cmd /k Call rc_hub.bat 4444 start cmd /k Call rc_grid1.bat 5555 start cmd /k Call rc_grid1.bat 6666 start cmd /k Call rc_grid1.bat 5570. 

प्रयत्न

 call msbuild.bat call unit-tests.bat call deploy.bat 
 call msbuild.bat call unit-tests.bat call deploy.bat 

.bat फ़ाइल में एक .bat फ़ाइल को कॉल करने के लिए, उपयोग करें

 call foo.bat 

(हां, यह मूर्खतापूर्ण है, अगर आप इसे foo.bat से foo.bat , जैसे कि आप कमांड प्रॉम्प्ट से कह सकते हैं, लेकिन सही तरीके से call का उपयोग करना है।)

आप एक प्रोग्राम को संकलित करने के प्रयास में कई बैचों को बुला रहे हैं। मैं मानता हूँ कि यदि कोई त्रुटि आती है:
1) बैच के अंदर प्रोग्राम एक त्रुटि स्तर से बाहर निकल जाएगा;
2) आप इसके बारे में जानना चाहते हैं

 for %%b in ("msbuild.bat" "unit-tests.bat" "deploy.bat") do call %%b|| exit /b 1 

'||' एक त्रुटि स्तर के लिए परीक्षण 0 से अधिक है। इस तरह सभी बैचों को क्रम में कहा जाता है लेकिन किसी भी त्रुटि को रोक देगा, स्क्रीन को छोड़कर, जैसा कि आप किसी भी त्रुटि संदेश को देखने के लिए है

अगर हमारे पास 2 बैच स्क्रिप्ट aaa.bat और bbb.bat है और नीचे की तरह कॉल करें

 call aaa.bat call bbb.bat 

स्क्रिप्ट निष्पादित करते समय, यह aaa.bat को कॉल करेगा और aaa.bat के धागे का इंतजार करेगा, तब बीबीबी.बैट फोन करेगा

लेकिन अगर आप aaa.bat इंतजार नहीं करना चाहते तो bbb.bat को कॉल करें, START कमांड का उपयोग करने का प्रयास करें

 START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] [/AFFINITY <hex affinity>] [/WAIT] [/B] [command/program] [parameters] 

परीक्षा:

 start /b aaa.bat start /b bbb.bat 

आपके फाइलनामों को देखकर, क्या आपने नैन्ट या चींटी (जावा संस्करण) जैसे बिल्ड टूल का उपयोग करने पर विचार किया है। आपको बल्लेबाजी फ़ाइलों की तुलना में अधिक नियंत्रण मिलेगा

 Start msbuild.bat Start unit-tests.bat Start deploy.bat 

अगर वह काम नहीं करता है, तो call start जगह या इसे आज़माएं:

 Start msbuild.bat Goto :1 :1 Start unit-tests.bat Goto :2 :2 Start deploy.bat 

यदि आप कई बैच फाइल को एक बार खोलना चाहते हैं, तो आप कॉल कमांड का उपयोग कर सकते हैं, लेकिन कॉल कमांड वर्तमान बैट फाइल को बंद कर देता है और दूसरी ओर चला जाता है यदि आप कई बार एक बार खोलना चाहते हैं तो आप यह कोशिश कर सकते हैं

 @echo off start cmd "call ex1.bat&ex2.bat&ex3.bat" 

और इतने पर या कई फाइलों के लिए cmd " call …" को दोहराएं यह 7 के लिए काम करता है अन्य सिस्टम के बारे में निश्चित नहीं है

एक में कई स्क्रिप्ट चलाना मेरे पास एक ही समस्या थी। मैंने इसे पहली बार नहीं सोचा था कि यह पहली स्क्रिप्ट पर निकल रहा था।

 :: OneScriptToRunThemAll.bat CALL ScriptA.bat CALL ScriptB.bat EXIT :: ScriptA.bat Do Foo EXIT ::ScriptB.bat Do bar EXIT 

मैंने अपनी सभी 11 लिपियों निकास लाइनों को हटा दिया और फिर से कोशिश की और सभी 11 एक ही आदेश खिड़की में एक बार में क्रम में चला गया।

 :: OneScriptToRunThemAll.bat CALL ScriptA.bat CALL ScriptB.bat EXIT ::ScriptA.bat Do Foo ::ScriptB.bat Do bar 

बस call कमांड का उपयोग call ! यहाँ एक उदाहरण है:

 call msbuild.bat call unit-tests.bat call deploy.bat 

चीयर्स!