विंडोज़ पर बैच स्क्रिप्टिंग में, डेवलपर्स विराम या प्रतीक्षा शुरू करने के लिए विभिन्न तकनीकों या विधियों का उपयोग करके आपकी स्क्रिप्ट के प्रवाह को नियंत्रित कर सकते हैं। 'रोकें' और 'प्रतीक्षा करें' आदेश आपकी बैच फ़ाइलों के प्रवाह को नियंत्रित करने के दो तरीके हैं। 'रोकें' कमांड 'जारी रखने के लिए कोई भी कुंजी दबाएं...' संदेश प्रस्तुत करते समय बैच फ़ाइल के निष्पादन को रोक देता है। बैच फ़ाइल तब तक नहीं चल सकती जब तक उपयोगकर्ता कोई कुंजी नहीं दबाता। प्रतीक्षा निर्देश द्वारा इंगित सेकंड की संख्या के लिए बैच फ़ाइल का निष्पादन निलंबित कर दिया गया है।
बैच फ़ाइल रोकने का आदेश
बैच फ़ाइल का 'पॉज़' कमांड कमांड लाइन पर संदेश प्रदर्शित करते समय बैच फ़ाइल निष्पादन को रोक देता है। बैच फ़ाइल तब तक नहीं चलेगी जब तक उपयोगकर्ता कोई कुंजी नहीं दबाता। वह आदेश जो अगले निष्पादन को रोकता है, सहायक होता है। बैच फ़ाइल को सीधे चलाना और वांछित आउटपुट को स्क्रीन पर देखना फायदेमंद है।
'रोकें' कमांड का सिंटैक्स है:
विराम
उपयोगकर्ता को इनपुट के लिए संकेत दें
जब उपयोगकर्ता इस बैच फ़ाइल को चलाता है तो निम्नलिखित बैच स्क्रिप्ट में 'रोकें' कमांड 'जारी रखने के लिए कोई भी कुंजी दबाएँ...' संदेश दिखाता है। बैच फ़ाइल को 'dir' कमांड पर ले जाने से पहले, उपयोगकर्ता को एक कुंजी दबानी होगी।
@गूंज बंद
रेम यह बैच फ़ाइल उपयोगकर्ता द्वारा एक कुंजी दबाने के लिए रुकती है।
इको नमस्ते, PAUSE कमांड प्रदर्शन में आपका स्वागत है।
इको स्क्रिप्ट का निष्पादन विराम के बाद भी जारी रहता है।
विराम
रेम यह बैच फ़ाइल अगले कमांड के साथ जारी रहती है।
प्रतिध्वनि धन्यवाद!
आप
जब उपयोगकर्ता कीबोर्ड का उपयोग करके कोई कुंजी दबाता है, तो यह बैच प्रक्रिया जारी रहती है:
बैच फ़ाइल प्रतीक्षा आदेश
आपके द्वारा प्रदान किया गया कोड एक बैच फ़ाइल है जो दो प्रोग्राम खोलती है: नोटपैड और पेंट। कोड इस प्रकार है:
@गूंज बंदइको स्टार्टिंग फर्स्ट प्रोग्राम।
प्रारंभ /बी /प्रतीक्षा करें Notepad.exe
इको नोटपैड पृष्ठभूमि में सफलतापूर्वक खोला गया
इको प्रारंभ दूसरा कार्यक्रम।
mspaint.exe प्रारंभ/प्रतीक्षा करें
इको पेंट सफलतापूर्वक खुल गया है।
सीएमडी /के
पहली पंक्ति, '@echo off', बैच फ़ाइल को कमांड निष्पादित होने पर प्रदर्शित होने से रोकती है।
उपयोगकर्ता को बस यह सूचित किया जाता है कि पहला प्रोग्राम दूसरी पंक्ति द्वारा लॉन्च किया जा रहा है जो कि 'इको स्टार्टिंग फर्स्ट प्रोग्राम' है।
तीसरी पंक्ति, 'START /B /WAIT Notepad.exe', नोटपैड प्रोग्राम को पृष्ठभूमि विंडो में खोलती है और जारी रखने से पहले इसके समाप्त होने की प्रतीक्षा करती है। '/B' स्विच START कमांड को प्रोग्राम को पृष्ठभूमि विंडो में चलाने के लिए कहता है, और '/WAIT' स्विच START कमांड को जारी रखने से पहले प्रोग्राम समाप्त होने तक प्रतीक्षा करने के लिए कहता है।
चौथी पंक्ति इको नोटपैड को पढ़ती है। जब नोटपैड पृष्ठभूमि में सफलतापूर्वक खोला जाता है, तो यह उपयोगकर्ता को केवल एक संदेश के साथ सूचित करता है।
पांचवीं पंक्ति, 'इको स्टार्टिंग सेकेंड प्रोग्राम', उपयोगकर्ता को बस एक संदेश प्रदर्शित करती है कि दूसरा प्रोग्राम शुरू किया जा रहा है।
छठी पंक्ति, 'START /WAIT mspaint.exe', पेंट प्रोग्राम को पृष्ठभूमि विंडो में खोलती है और जारी रखने से पहले इसके समाप्त होने का इंतजार नहीं करती है।
सातवीं पंक्ति, 'इको द पेंट सफलतापूर्वक खोला गया', उपयोगकर्ता को बस एक संदेश दिखाती है कि पेंट सफलतापूर्वक खोला गया है।
आठवीं पंक्ति, 'cmd /k', एक नई कमांड प्रॉम्प्ट विंडो खोलती है और वर्तमान कमांड प्रॉम्प्ट विंडो को खुला रखती है।
कस्टम विलंब के लिए लूप का उपयोग करना
हम बैच प्रक्रिया में कस्टम विलंब के लिए एक लूप का उपयोग कर सकते हैं। यहाँ एक उदाहरण है:
इस उदाहरण में, जब यह बैच फ़ाइल चलती है तो उपयोगकर्ता को पहला संदेश दिखाया जाता है। 'फॉर' लूप शुरू होने पर पहला संदेश एक बार फिर प्रदर्शित होता है। टाइमआउट कमांड दूसरा संदेश प्रदर्शित करने से पहले बैच फ़ाइल को एक सेकंड के लिए रोक देता है। कुल 10 पुनरावृत्तियों के बाद अंतिम संदेश दिखाया जाता है।
@गूंज बंदलूप का उपयोग करके विलंब का प्रतिध्वनि प्रदर्शन
/l %%i के लिए (1,1,10) में (
टाइमआउट /टी 1 /नोब्रेक > शून्य
प्रतिध्वनि यह संदेश %%i सेकंड के बाद प्रदर्शित होता है
)
प्रतिध्वनि यह संदेश 10 सेकंड की देरी प्रदर्शित करता है।
विलंब के लिए टाइमआउट का उपयोग करना
बैच फ़ाइल का टाइमआउट कमांड बैच फ़ाइल निष्पादन को पूर्व निर्धारित सेकंड के लिए रोक देता है। वाक्यविन्यास यहाँ दिया गया है:
टाइमआउट /t'/t' स्विच प्रतीक्षा करने के लिए सेकंड में समय की मात्रा निर्दिष्ट करता है। '/नोब्रेक' स्विच विलंब को तोड़ने के लिए उपयोगकर्ता द्वारा कुंजी दबाने को अक्षम कर देता है।
'टाइमआउट' कमांड का उपयोग इसके लिए किया जा सकता है:
- बैच फ़ाइल के निष्पादन को पूर्व निर्धारित अवधि के लिए स्थगित करें
- बैच फ़ाइल कार्रवाई को उपयोगकर्ता द्वारा बाधित होने से रोकें
- उपयोगकर्ता को जारी रखने के लिए कुंजी दबाने से रोककर अधिक उपयोगकर्ता-अनुकूल अनुभव बनाएं
उदाहरण के लिए, निम्न बैच फ़ाइल 10 सेकंड के लिए रुकती है:
@गूंज बंदइको हैलो, स्क्रिप्ट निष्पादन 10 सेकंड की देरी के बाद भी जारी रहता है
टाइमआउट/टी 10
प्रतिध्वनि धन्यवाद!
जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है, एक टाइमर चल रहा है और उपयोगकर्ता द्वारा किसी भी कुंजी को दबाकर 'टाइमआउट' कमांड को बाधित करने की प्रतीक्षा की जा रही है। यदि उपयोगकर्ता कोई कुंजी दबाता है, तो प्रक्रिया रुक जाती है और बैच फ़ाइल में अगले कमांड पर चली जाती है:
निम्नलिखित स्क्रीनशॉट में उपयोगकर्ता 5 सेकंड के बाद 'टाइमआउट' कमांड को बाधित करता है, जिसके परिणामस्वरूप 'धन्यवाद!' संदेश:
निम्नलिखित स्क्रीनशॉट दिखाता है कि कैसे 'धन्यवाद!' यदि अंतिम उपयोगकर्ता टाइमआउट निर्देश को बाधित नहीं करता है तो संदेश को स्क्रीन पर प्रिंट होने में 10 सेकंड का समय लगता है:
यहां अद्यतन कोड है जिसे नो-ब्रेक स्विच को शामिल करने के लिए संशोधित किया गया है जो अंतिम-उपयोगकर्ता को बैच फ़ाइल प्रक्रिया को बाधित करने से रोकता है:
@गूंज बंदरेम यह बैच फ़ाइल 10 सेकंड के लिए रुकती है
इको हैलो, स्क्रिप्ट निष्पादन 10 सेकंड की देरी के बाद भी जारी रहता है
टाइमआउट /टी 10 /नोब्रेक
रेम 10 सेकंड के बाद यह कमांड प्रॉम्प्ट स्क्रीन पर प्रदर्शित होगा
प्रतिध्वनि धन्यवाद!
यहाँ पिछले कोड का आउटपुट है:
यदि उपयोगकर्ता 'CTRL+C' कमांड का उपयोग करता है तो कमांड लाइन उपयोगकर्ता को Y या N टाइप करने के लिए प्रेरित करती है। यदि उपयोगकर्ता Y पर क्लिक करता है, तो यह बैच कार्य रुक जाता है:
'रोकें', 'प्रतीक्षा करें' और 'समय समाप्ति' आदेश हमारी स्क्रिप्ट के प्रवाह को नियंत्रित करने के तरीके हैं। जब 'पॉज़' कमांड का उपयोग किया जाता है तो स्क्रिप्ट को चलने से निलंबित कर दिया जाता है, और जब 'टाइमआउट' कमांड का उपयोग किया जाता है तो इसे पूर्व निर्धारित समय के लिए रोक दिया जाता है।
प्रवाह नियंत्रण के लिए सशर्त विवरण का उपयोग करना
सशर्त कथन सबसे आम तौर पर व्यवहार्य तकनीक है जिसका उपयोग किसी निश्चित परिस्थिति के आधार पर स्क्रिप्ट के प्रवाह को संशोधित करने के लिए किया जाता है। कोई शर्त सही है या गलत, इसके आधार पर, 'अगर' कथन कोड निष्पादन के दो टुकड़ों में से एक को निष्पादित करता है। 'यदि' कथन इस प्रकार संरचित है:
यदि <स्थिति> <सच्चा_ब्लॉक> अन्यथा <झूठा_ब्लॉक>उदाहरण:
नोटपैड या अपनी पसंद का कोई भी टेक्स्ट एडिटर खोलें और निम्नलिखित कोड लिखें जो तीसरी पंक्ति में इनपुटवैल्यू वैरिएबल के मान को 1 से प्रारंभ करता है। इनपुटवैल्यू वैरिएबल का मान रन टाइम पर 'if' स्टेटमेंट का उपयोग करके जांचा जाता है, यह देखने के लिए कि क्या यह 1, 2, या 3 के बराबर है। यदि ऐसा है, तो उचित संदेश कमांड लाइन स्क्रीन पर मुद्रित होता है। यदि ऐसा नहीं है, तो अंतिम संदेश प्रदर्शित होता है। एक सशर्त कथन में जिसे 'if' के नाम से जाना जाता है, एक वेरिएबल के इनपुट वैल्यू को यह देखने के लिए जांचा जाता है कि क्या यह 1, 2, या 3 के बराबर है। यदि ऐसा होता है, तो दो कोड ब्लॉक में से एक को निष्पादित किया जाता है। यदि शर्त सत्य है, तो सशर्त कथन कुछ नहीं करता।
@गूंज बंदरेम यह स्क्रिप्ट मान 1, 2, और 3 के विरुद्ध वेरिएबल इनपुटवैल्यू का परीक्षण करती है।
इनपुटवैल्यू=1 सेट करें
यदि '%inputValue%'=='1' (
इको इनपुट मान 1 के बराबर है।
) अन्यथा यदि '%inputValue%'===2' (
इको इनपुट मान 2 के बराबर है।
) अन्यथा यदि '%inputValue%'===3' (
इको इनपुट मान 3 के बराबर है।
) अन्य (
इको वैरिएबल इनपुटवैल्यू 1, 2, या 3 के बराबर नहीं है।
)
आउटपुट:
निष्कर्ष
स्क्रिप्ट प्रवाह को नियंत्रित किया जा सकता है, और कमांड, लूप और 'if' जैसे सशर्त कथनों का उपयोग करके विंडोज़ ऑपरेटिंग सिस्टम पर प्रक्रियाओं को स्वचालित किया जा सकता है। डेवलपर्स 'टाइमआउट' या 'पिंग' का उपयोग करके स्क्रिप्ट के निष्पादन को रोक सकते हैं या 'रोकें' कमांड के साथ देरी जोड़ सकते हैं। हालाँकि बैच स्क्रिप्टिंग में कोई अंतर्निहित 'स्विच' स्टेटमेंट नहीं है, हम इसे 'अगर' और 'और अगर' अभिव्यक्तियों के साथ अनुकरण कर सकते हैं। यह सुनिश्चित करने के लिए परीक्षण महत्वपूर्ण है कि ये स्क्रिप्ट उचित संदर्भ में इरादा के अनुसार काम करती हैं। ये स्क्रिप्ट स्वचालन, सिस्टम प्रबंधन और फ़ाइल हेरफेर के लिए उपयोगी हैं।