एक बैच फ़ाइल में साधारण कमांड की सूची लिखने में समस्याएँ होना


1

मैं एक बैच में कुछ साधारण बैच कमांड चलाने की कोशिश कर रहा हूं।
इस मामले के लिए प्रत्येक कमांड एक बैच कमांड निम्नानुसार है:

 rails generate scaffold illness name:string
 rails generate scaffold ingredient name:string origin_id:integer

अब, सभी 30 कमांड चलाने के बजाय, मेरी बैच फ़ाइल पहले ही चलती है और प्रॉम्प्ट लाइन पर वापस आती है। इसलिए मुझे इसे मैन्युअल रूप से चलाना होगा।

जवाबों:


4

आपको शब्द callको बैच फ़ाइल के सामने रखना होगा ...

@ तो बंद
कॉल रेल्स मचान बीमारी का नाम उत्पन्न करती हैं: स्ट्रिंग
कॉल रैलिस मचान घटक नाम: स्ट्रिंग मूल_आईडी: पूर्णांक

यह मानता है "रेल" वास्तव में रेल है।


1
सही, या rails.cmd। जब आपको कोई कमांड चलाना होता है तो यह कष्टप्रद होता है और यह महसूस नहीं होता कि यह एक बैच फ़ाइल है, जो कि आज सुबह मेरे साथ हुआ।
मार्क एलेन

धन्यवाद। क्या वह नियम है? बैच बैच के अंदर के रूप में लिखा जाता है और कॉल उपसर्ग के साथ बैच / सेमी लिखा जाना चाहिए?
बिक

4

जबकि जफ्फुगा द्वारा पिछला उत्तर सही है, अधिक पूर्ण उत्तर इस प्रकार है:

@echo off
call rails generate scaffold illness name:string
call ralis generate scaffold ingredient name:string origin_id:integer

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

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

notepad.exe
call notepad.exe
echo    It came back.

लेकिन जब एक और बैच फ़ाइल कॉल की जाती है, तो पूर्ण नियंत्रण नई प्रक्रिया को पारित किया जाता है जब तक कि सामने कोई कॉल न हो। इसलिए निम्नलिखित कोड में, बैट फ़ाइल की पहली कॉलिंग पूरी होने पर वापस आ जाएगी, लेकिन दूसरी कभी नहीं लौटेगी, इसलिए अंतिम इको लाइन कभी नहीं चलेगी। firstBatch.bat SecondBatch.bat गूंज आप इस लाइन को कभी नहीं देखेंगे

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

cmd
call cmd 
cmd /c dir
echo   You will see this after typing Exit twice to leave two new instances of cmd. The third instance returned automatically.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.