डेटा के प्रकार
वीबीस्क्रिप्ट भाषा एक एकल डेटा प्रकार - वेरिएंट का उपयोग करती है, जो आपको एक संख्या, स्ट्रिंग, दिनांक, बूलियन मान, ऑब्जेक्ट संदर्भ और अन्य जानकारी को एक चर में संग्रहीत करने की अनुमति देती है। आप फ़ंक्शंस के एक सेट का उपयोग करके एक चर के सामग्री प्रकार को निर्धारित कर सकते हैं: VarType , typeName, IsArray, IsDate, IsEmpty, IsNull, IsNumeric, IsObject, जिस पर नीचे चर्चा की जाएगी। निहित जानकारी के प्रकार को भिन्न उपप्रकार भी कहा जाता है। उपप्रकारों की पूरी सूची निम्नलिखित तालिका में दी गई है:
उप-प्रकार | विवरण |
---|---|
खाली | वेरिएबल को कोई मान निर्दिष्ट नहीं किया गया है. संख्यात्मक अभिव्यक्तियों में एक अप्रारंभीकृत चर का उपयोग करते समय, 0 को प्रतिस्थापित किया जाएगा, और स्ट्रिंग अभिव्यक्तियों में, एक खाली स्ट्रिंग को प्रतिस्थापित किया जाएगा। |
व्यर्थ | वेरिएबल में कोई डेटा नहीं है. |
बूलियन | एक बूलियन वैरिएबल सही या गलत मान ले सकता है। |
बाइट | 0 से 255 तक का पूर्णांक। |
पूर्णांक | -32,768 से 32,767 की सीमा में एक पूर्णांक। |
मुद्रा | -922,337,203,685,477.5808 से 922,337,203,685,477.5807 की सीमा में एक निश्चित-बिंदु संख्या। |
लंबा | -2,147,483,648 से 2,147,483,647 की सीमा में एक पूर्णांक। |
अकेला | एकल परिशुद्धता फ़्लोटिंग पॉइंट संख्या। नकारात्मक मानों के लिए स्वीकार्य सीमा है -3.402823E38 से -1.401298E-45 तक। सकारात्मक लोगों के लिए - 1.401298ई-45 से 3.402823ई38 तक। |
दोहरा | डबल परिशुद्धता फ़्लोटिंग पॉइंट संख्या। नकारात्मक मानों के लिए, स्वीकार्य सीमा है 79769313486232ई308 से -4.94065645841247ई-324। सकारात्मक लोगों के लिए - 4.94065645841247E-324 से 1.79769313486232E308 तक। |
दिनांक समय) | इसमें 1 जनवरी, 100 से लेकर 31 दिसंबर, 9999 तक की सीमा में एक तारीख का प्रतिनिधित्व करने वाली संख्या शामिल है। |
डोरी | वर्णों का क्रम. अधिकतम लंबाई लगभग 2 अरब अक्षर है। |
वस्तु | एक वस्तु। |
गलती | त्रुटि क्रमांक. |
उस अभिव्यक्ति के आधार पर जिसमें चर शामिल है, इसकी सामग्री स्वचालित रूप से वांछित प्रकार में डाली जाएगी। इस उदाहरण पर विचार करें:
विकल्प स्पष्ट उप परीक्षणवीबीस्क्रिप्ट मंद ए, बी ए = 5 बी = "12" एप्लीकेशन.मैसेजबॉक्स ए + बी, "", वीबीओकेओनली एंड सब
चूँकि अभिव्यक्ति में एक संख्यात्मक चर शामिल है ए, दुभाषिया चर के मान को परिवर्तित करता है बीस्ट्रिंग से "12" एक संख्या में और उनका योग करें:
आइए मैक्रो को बदलें ताकि वेरिएबल एइसमें यह पंक्ति भी शामिल है:
विकल्प स्पष्ट उप परीक्षणवीबीस्क्रिप्ट मंद ए, बी ए = "5" बी = "12" एप्लीकेशन.मैसेजबॉक्स ए + बी, "", वीबीओकेओनली एंड सब
चलिए इसे चलाते हैं. अब दो स्ट्रिंग्स के विलय (संयोजन) का परिणाम स्क्रीन पर दिखाई देगा, न कि उनके संख्यात्मक प्रतिनिधित्व का योग:
स्वचालित प्रकार की कास्टिंग के साथ भ्रम से बचने के लिए, रूपांतरण कार्यों का उपयोग करने की अनुशंसा की जाती है: CBool, CByte, CCur, CDate, CDbl, CInt, CLng, CSng, CStr।
यदि अभिव्यक्ति का परिणाम स्ट्रिंग्स का संयोजन होना चाहिए, न कि उनके संख्यात्मक प्रतिनिधित्व का योग, तो + के बजाय & ऑपरेटर का उपयोग किया जाना चाहिए।
चर
एक वेरिएबल मेमोरी के एक क्षेत्र का एक सुविधाजनक प्रतीकात्मक प्रतिनिधित्व है जहां एक एप्लिकेशन कुछ डेटा संग्रहीत करता है। एप्लिकेशन निष्पादन के दौरान, एक वेरिएबल का मान बदल सकता है। उपयोग से पहले, एक वेरिएबल को डिम स्टेटमेंट का उपयोग करके घोषित किया जाना चाहिए।
एक ऑपरेटर का उपयोग करके, आप एक साथ कई वेरिएबल घोषित कर सकते हैं, यदि आप उनके नामों को अल्पविराम से अलग करके सूचीबद्ध करते हैं:
मंद बाएँ, दाएँ, ऊपर, नीचे
घोषित करते समय, डेटा प्रकार निर्दिष्ट करने की कोई आवश्यकता नहीं है, क्योंकि सभी वेरिएबल वेरिएंट प्रकार के होते हैं।
यदि स्क्रिप्ट टेक्स्ट की पहली पंक्ति में विकल्प स्पष्ट निर्दिष्ट नहीं है, तो चर का उपयोग बिना घोषणा के किया जा सकता है। लेकिन इस पथ से त्रुटियों का पता लगाना कठिन हो सकता है। अप्रत्याशित परिणाम प्राप्त करने के लिए प्रोग्राम टेक्स्ट में किसी वेरिएबल नाम की एक बार गलत वर्तनी करना पर्याप्त है। हम अनुशंसा करते हैं कि आप हमेशा विकल्प स्पष्ट निर्दिष्ट करें और चर घोषित करें।
परिवर्तनीय नाम को निम्नलिखित आवश्यकताओं को पूरा करना होगा:
- लैटिन वर्णमाला के प्रतीक से आरंभ करें;
- इसमें केवल लैटिन वर्णमाला के अक्षर या लैटिन वर्णमाला के अक्षर और संख्याएँ शामिल हैं;
- लंबाई 255 अक्षरों से अधिक न हो;
- अपने दायरे में अद्वितीय बनें.
दायरा और जीवनकाल
किसी वेरिएबल का दायरा इस बात से निर्धारित होता है कि इसे कहां घोषित किया गया है। यदि किसी प्रक्रिया के मुख्य भाग के अंदर, तो ऐसे चर को स्थानीय कहा जाता है और यह केवल इस प्रक्रिया के भीतर ही उपलब्ध होता है। यदि किसी स्क्रिप्ट के पाठ में एक वेरिएबल घोषित किया गया है, तो यह इस स्क्रिप्ट में परिभाषित सभी प्रक्रियाओं या कार्यों के लिए दृश्यमान होगा। यदि स्थानीय चरों को विभिन्न प्रक्रियाओं में घोषित किया जाता है तो उनके नाम समान हो सकते हैं।
स्क्रिप्ट ऑब्जेक्ट एडिटर विंडो के एक्सप्लोरर ट्री में प्रोजेक्ट के सभी स्क्रिप्ट फ़ंक्शंस के लिए दृश्यमान वैश्विक चर घोषित करने के लिए एक विशेष अनुभाग - कॉन्स्टेंट और वेरिएबल्स - है।
दुभाषिया घोषित होने के समय स्थानीय चर के लिए मेमोरी आवंटित करता है और प्रक्रिया से बाहर निकलने पर उन्हें जारी करता है। ग्लोबल वैरिएबल घोषित होने के क्षण से लेकर स्क्रिप्ट के निष्पादित होने तक मौजूद रहते हैं। गेडिमिन के संबंध में, इसका मतलब है कि कार्यक्रम के संपूर्ण निष्पादन के दौरान वैश्विक चर मौजूद हैं।
किसी वेरिएबल को मान निर्दिष्ट करना
घोषित चर का मान = ऑपरेटर का उपयोग करके निर्दिष्ट किया जाता है। परिवर्तनीय नाम ऑपरेटर के बाईं ओर इंगित किया गया है, नया मान दाईं ओर इंगित किया गया है। उदाहरण के लिए:
ए = 200 बी = "नाम"
अदिश चर और सारणियाँ
एकल मान वाले चर को अदिश कहा जाता है। कभी-कभी, एक वेरिएबल में कई मानों को संग्रहीत करने की आवश्यकता होती है। इस स्थिति में, आपको एक सरणी घोषित करनी चाहिए। घोषणा का सिंटैक्स एक स्केलर चर की घोषणा के समान है, इस अपवाद के साथ कि कोष्ठक में नाम के बाद हम सरणी का आकार निर्दिष्ट करते हैं। निम्नलिखित घोषणा 12 तत्वों की एक सरणी बनाएगी:
डिम मोन्थेस(11)
वीबीस्क्रिप्ट में, किसी ऐरे इंडेक्स की बाईं सीमा हमेशा 0 होती है। इस प्रकार, ऐरे के आकार की गणना कोष्ठक में संख्या प्लस एक के रूप में की जाती है। किसी सरणी तत्व को मान निर्दिष्ट करते समय, उसके सूचकांक को कोष्ठक में निर्दिष्ट करें:
माह(0) = "जनवरी" माह(1) = "फरवरी" माह(2) = "मार्च"... माह(10) = "नवंबर" माह(11) = "दिसंबर"
इसी प्रकार, किसी तत्व के मूल्य तक पहुँचते समय, हम उसके सूचकांक का उपयोग करते हैं:
महीने का नाम = महीने(5)
सरणी का एक-आयामी होना आवश्यक नहीं है. किसी सरणी की घोषणा करते समय वीबीस्क्रिप्ट हमें 60 आयामों तक निर्दिष्ट करने की अनुमति देता है। उदाहरण के लिए, निम्नलिखित कथन 12 पंक्तियों और दो स्तंभों की एक द्वि-आयामी सरणी बनाएगा:
मंद माहदिन(11, 1)
बहुआयामी सरणी के तत्वों तक पहुँचते समय, सभी सूचकांक निर्दिष्ट किए जाने चाहिए:
महीने के दिन(0, 0) = "जनवरी" महीने के दिन(0, 1) = 31 महीने के दिन(1, 0) = "फरवरी" महीने के दिन(1, 1) = 28 ...
ऊपर हमने ऐसे ऐरे घोषित किए हैं जिनका आकार प्रोग्राम ऑपरेशन के दौरान नहीं बदलता है। यदि आप पहले से नहीं जानते हैं कि आपको कितने तत्वों की आवश्यकता होगी, तो आप एक गतिशील सरणी घोषित कर सकते हैं:
उपयोग से पहले, आपको ReDim ऑपरेटर का उपयोग करके गतिशील सरणी का आकार निर्धारित करना चाहिए:
रेडिम ए(25)
निष्पादन के दौरान, आप ReDim ऑपरेटर को कई बार कॉल कर सकते हैं, हर बार सरणी का आकार बदल सकते हैं। आकार बदलते समय संरक्षित विकल्प सरणी तत्वों के मूल्यों को संरक्षित करता है। उदाहरण के लिए, निम्नलिखित कोड ऊपर घोषित सरणी को पांच तत्वों से बढ़ा देगा, मौजूदा तत्वों को अछूता छोड़ देगा:
रेडिम प्रिजर्व ए(30)
याद रखें कि सरणी का आकार कम करते समय, हटाए गए तत्वों के मान अपरिवर्तनीय रूप से खो जाएंगे। इरेज़ ऑपरेटर का उपयोग करके, आप एक निश्चित सरणी के तत्वों को साफ़ कर सकते हैं या गतिशील सरणी द्वारा कब्जा की गई मेमोरी को मुक्त कर सकते हैं।
मंद ए रीडिम ए(25) ... मिटाएं ए
स्थिरांक
प्रोग्राम टेक्स्ट में बार-बार उपयोग किए जाने वाले मानों के लिए स्थिरांक घोषित करना एक अच्छा नियम है। सही ढंग से निर्दिष्ट स्थिर नाम पठनीयता में सुधार करता है, और इसका उपयोग स्वयं कोड में परिवर्तन करने की प्रक्रिया को सरल बनाता है। चर के विपरीत, प्रोग्राम निष्पादन के दौरान स्थिरांक का मान नहीं बदला जा सकता है। कॉन्स्ट ऑपरेटर का उपयोग करके एक स्थिरांक बनाया जाता है:
कॉन्स्ट कंट्रीनाम = "बेलारूस" कॉन्स्ट कंट्रीकोड = 375
अल्पविराम द्वारा अलग किए गए एक कथन के भीतर कई स्थिरांक घोषित किए जा सकते हैं। एक चर की तरह, एक स्थिरांक का अपना दायरा होता है जो इस पर निर्भर करता है कि इसे कहां (किसी प्रक्रिया में या इसके बाहर) और कैसे (सार्वजनिक या निजी) घोषित किया गया था। सार्वजनिक या निजी निर्दिष्ट किए बिना कॉन्स्ट ऑपरेटर द्वारा बनाए गए स्थिरांक डिफ़ॉल्ट रूप से सार्वजनिक होते हैं।
स्क्रिप्ट ऑब्जेक्ट एडिटर विंडो के एक्सप्लोरर ट्री में प्रोजेक्ट के सभी स्क्रिप्ट फ़ंक्शंस के लिए दृश्यमान वैश्विक स्थिरांक घोषित करने के लिए एक विशेष अनुभाग - कॉन्स्टेंट और वेरिएबल्स है।
स्ट्रिंग स्थिरांक के मान दोहरे उद्धरण चिह्नों में संलग्न हैं।
दिनांक प्रकार के मान हैश प्रतीकों (#) से घिरे होने चाहिए और अमेरिकी प्रारूप का उपयोग करना चाहिए: महीना/दिन/वर्ष। उदाहरण के लिए:
कॉन्स्ट पब्लिक इंडिपेंडेंसडे = #03/25/1918#
स्थिरांक और चर के बीच भ्रम से बचने के लिए, सभी स्थिरांकों के लिए एक एकल उपसर्ग का उपयोग करने की अनुशंसा की जाती है, जैसे कि "con", या अपरकेस में स्थिरांक नाम टाइप करें।
प्रोग्रामर के काम को आसान बनाने के लिए, VBScript में पूर्वनिर्धारित स्थिरांक का एक सेट होता है।
ऑपरेटर्स
वीबीस्क्रिप्ट ऑपरेटर पांच श्रेणियों में आते हैं: अंकगणित, तुलना, मर्ज, तार्किक और असाइनमेंट।
अंकगणितीय आपरेटर
ऑपरेटर | उपयोग उदाहरण | विवरण |
---|---|---|
^ | संख्या^प्रतिपादक | संख्या को घातांक तक बढ़ाता है। संख्या शून्य से कम तभी हो सकती है जब वह पूर्णांक घात हो। यदि ऑपरेंड में से एक शून्य है, तो संपूर्ण अभिव्यक्ति शून्य है। यदि कई घातांक एक पंक्ति में किए जाते हैं, तो परिणाम की गणना बाएं से दाएं की ओर की जाती है। |
* | नंबर 1 * नंबर 2 | दो संख्याओं का गुणनफल. यदि ऑपरेंड का मान Empty है, तो इसे शून्य माना जाता है। यदि ऑपरेंड में से कम से कम एक शून्य है, तो संपूर्ण अभिव्यक्ति शून्य का मूल्यांकन करती है। |
/ | नंबर 1 / नंबर 2 | दो संख्याओं का वास्तविक विभाजन. ऑपरेंड के नियम गुणन ऑपरेटर के समान हैं। |
\ | नंबर1\नंबर2 | पूर्णांक विभाजन. मूल्यांकन से पहले, दोनों ऑपरेंड को बाइट, इंटीजर या लॉन्ग में डाला जाता है। अन्यथा, डिवीजन ऑपरेटर के लिए भी वही नियम लागू होते हैं। |
आधुनिक | नंबर 1 मॉड नंबर 2 | पूर्णांक विभाजन का शेषफल. ऑपरेंड को एक पूर्णांक में कास्टिंग करना, साथ ही पूर्णांक विभाजन की तरह खाली और शून्य को संभालने के नियम। |
+ | अभिव्यक्ति1 + अभिव्यक्ति2 | यदि दोनों ऑपरेंड संख्याएँ हैं, तो परिणाम उनका अंकगणितीय योग है। यदि दोनों ऑपरेंड स्ट्रिंग हैं, तो यह दो स्ट्रिंग्स का विलय (संघनन) है। यदि एक ऑपरेंड एक संख्या है और दूसरा एक स्ट्रिंग है, तो स्ट्रिंग ऑपरेंड को एक संख्या में बदल दिया जाएगा और संख्यात्मक में जोड़ दिया जाएगा। यदि ऑपरेंड में से कम से कम एक शून्य है, तो संपूर्ण अभिव्यक्ति शून्य का मूल्यांकन करती है। यदि दोनों ऑपरेंड खाली हैं, तो परिणाम का पूर्णांक मान 0 है। यदि केवल एक ऑपरेटर खाली है, तो दूसरे ऑपरेंड का मान परिणाम के रूप में लौटाया जाता है। |
- | नंबर 1 - नंबर 2 या - नंबर | पहले मामले में, यह दो संख्याओं का अंतर लौटाता है। दूसरे में, यह संख्या के चिह्न को उलट देता है। गुणन संचालिका की तरह शून्य और रिक्त मानों वाले ऑपरेंड के लिए नियम। |
तुलना संचालक
तुलना ऑपरेटरों का उपयोग करने का प्रारूप:
परिणाम = अभिव्यक्ति1 तुलनासंचालक अभिव्यक्ति2
जहां निम्नलिखित तुलना ऑपरेटरों का उपयोग किया जाता है:< (меньше), <= (меньше или равно), >(इससे अधिक), >= (इससे अधिक या इसके बराबर), = (इसके बराबर),<>(सम नही)।
ऑपरेंड के प्रकार और मूल्यों के आधार पर, तुलना निम्नानुसार की जाती है:
अगर | वह |
---|---|
दोनों ऑपरेंड संख्याएँ हैं। | दो संख्याओं के बीच तुलना की जाती है। |
दोनों ऑपरेंड स्ट्रिंग हैं। | दो तारों की तुलना की जाती है। |
ऑपरेंड में से एक एक संख्या है, और दूसरा एक स्ट्रिंग है। | स्ट्रिंग ऑपरेंड को एक संख्या में डाला जाता है और दो संख्याओं के बीच तुलना की जाती है। |
ऑपरेंड में से एक खाली है, और दूसरा एक संख्या है। | Empty मान वाला ऑपरेंड 0 माना जाता है। |
ऑपरेंड में से एक खाली है, और दूसरा एक स्ट्रिंग है। | Empty मान वाले ऑपरेंड को खाली स्ट्रिंग "" माना जाता है। दो तारों के बीच तुलना की जाती है। |
दोनों ऑपरेंड खाली हैं. | ऑपरेंड को बराबर माना जाता है। |
कम से कम एक ऑपरेंड शून्य है। | परिणाम शून्य है. |
विशेष Is ऑपरेटर का उपयोग दो ऑब्जेक्ट वेरिएबल्स की तुलना करने के लिए किया जाता है और यदि दोनों वेरिएबल एक ही ऑब्जेक्ट इंस्टेंस को संदर्भित करते हैं तो यह True लौटाता है।
संयोजन संचालक
परिणाम = अभिव्यक्ति1 और अभिव्यक्ति2
यदि ऑपरेंड एक स्ट्रिंग नहीं है, तो इसे स्ट्रिंग प्रकार में डाला जाता है। यदि दोनों ऑपरेंड शून्य हैं, तो परिणाम भी शून्य मान लेता है, हालांकि, अन्य ऑपरेटरों के विपरीत, यदि केवल एक ऑपरेंड शून्य है, तो इसे खाली स्ट्रिंग के बराबर लिया जाता है। खाली पर सेट ऑपरेंड को खाली स्ट्रिंग "" के रूप में भी माना जाता है।
लॉजिकल ऑपरेटर्स
VBScript हमें निम्नलिखित तार्किक ऑपरेटर प्रदान करता है:
- तार्किक अपवाद(Xor);
- तार्किक समतुल्य (Eqv);
- तार्किक निहितार्थ (छोटा सा भूत)।
तार्किक ऑपरेटरों के ऑपरेंड बूलियन अभिव्यक्ति या संख्यात्मक मान हो सकते हैं। पहले मामले में, परिणाम एक बूलियन स्थिरांक होगा, दूसरे में - एक संख्या। ऑपरेटर के आधार पर, इनपुट के रूप में एक या दो शून्य मानों की आपूर्ति से शून्य परिणाम हो सकता है। नॉट ऑपरेटर एकात्मक है और किसी अभिव्यक्ति का तार्किक निषेध लौटाता है। नॉट ऑपरेटर एक संख्यात्मक ऑपरेंड पर बिटवाइज़ व्युत्क्रम निष्पादित करता है। शेष तार्किक ऑपरेटर बाइनरी हैं। नीचे दी गई तालिका एक्सप1 और एक्सप2 ऑपरेंड के मूल्य के आधार पर प्रत्येक ऑपरेटर को निष्पादित करने के परिणाम दिखाती है:
ऍक्स्प1 | ऍक्स्प2 | और | या | ज़ोर | Eqv | छोटा सा भूत |
---|---|---|---|---|---|---|
सत्य | सत्य | सत्य | सत्य | असत्य | सत्य | सत्य |
सत्य | असत्य | असत्य | सत्य | सत्य | असत्य | असत्य |
असत्य | सत्य | असत्य | सत्य | सत्य | असत्य | सत्य |
असत्य | असत्य | असत्य | असत्य | असत्य | सत्य | सत्य |
सत्य | व्यर्थ | व्यर्थ | सत्य | व्यर्थ | व्यर्थ | व्यर्थ |
असत्य | व्यर्थ | असत्य | व्यर्थ | व्यर्थ | व्यर्थ | सत्य |
व्यर्थ | सत्य | व्यर्थ | सत्य | व्यर्थ | व्यर्थ | सत्य |
व्यर्थ | असत्य | असत्य | व्यर्थ | व्यर्थ | व्यर्थ | व्यर्थ |
व्यर्थ | व्यर्थ | व्यर्थ | व्यर्थ | व्यर्थ | व्यर्थ | व्यर्थ |
जीवन में, ऑपरेटरों And और Or का सबसे अधिक उपयोग किया जाता है, और बहुत कम बार - Xor का। हमने व्यवहार में Eqv और Imp ऑपरेटरों के उपयोग का सामना नहीं किया है। यदि आपको उपरोक्त तालिका को समझना मुश्किल लगता है, तो आइए इन ऑपरेटरों की कार्रवाई को संक्षेप में प्रस्तुत करें:
- और सत्य का मूल्यांकन तभी करता है जब दोनों ऑपरेंड सत्य हों। किसी भी अन्य मामले में, यह या तो गलत है या शून्य है।
- या यदि ऑपरेंड में से कम से कम एक सत्य है तो सत्य का मूल्यांकन करता है।
- यदि ऑपरेंड के मान भिन्न हैं तो Xor सत्य का मूल्यांकन करता है और यदि वे समान हैं तो गलत का मूल्यांकन करता है।
जब संख्यात्मक ऑपरेंड पर बिटवाइज़ निष्पादित किया जाता है, तो तार्किक ऑपरेटर का परिणाम निम्न तालिका द्वारा निर्धारित होता है:
ऍक्स्प1 | ऍक्स्प2 | और | या | ज़ोर | Eqv | छोटा सा भूत |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 0 | 1 | 1 |
असाइनमेंट ऑपरेटर
वैरिएबल अनुभाग में असाइनमेंट ऑपरेटर (=) का विस्तार से वर्णन किया गया है।
ऑपरेटरों के आवेदन का क्रम
यदि किसी अभिव्यक्ति में एकाधिक ऑपरेटर शामिल हैं, तो उन्हें एक निर्दिष्ट क्रम के अनुसार लागू किया जाता है, जिसे ऑपरेटर प्राथमिकता कहा जाता है। आप कोष्ठक का उपयोग करके डिफ़ॉल्ट क्रम बदल सकते हैं। कोष्ठक के अंदर की अभिव्यक्ति का मूल्यांकन हमेशा पहले किया जाता है।
विभिन्न श्रेणियों के ऑपरेटरों वाले एक अभिव्यक्ति में, अंकगणितीय संचालन पहले किया जाता है, फिर तुलना ऑपरेटरों का प्रदर्शन किया जाता है, और तार्किक ऑपरेटरों का अंतिम प्रदर्शन किया जाता है। सभी तुलना ऑपरेटरों की प्राथमिकता समान होती है और उनका मूल्यांकन बाएं से दाएं किया जाता है। अंकगणित और तार्किक ऑपरेटरों का मूल्यांकन निम्नलिखित क्रम में किया जाता है:
- घातांक (^);
- किसी संख्या का चिह्न बदलें, एकात्मक ऋण (-);
- गुणन और भाग (/);
- पूर्णांक विभाजन (\);
- पूर्णांक विभाजन शेष (मॉड);
- जोड़ (+) और घटाव (-);
- स्ट्रिंग संयोजन (&)।
यदि गुणा और भाग एक ही अभिव्यक्ति में होते हैं, तो संचालन बाएं से दाएं क्रम में किया जाता है। एक समान नियम जोड़ और घटाव ऑपरेटरों की एक साथ उपस्थिति के मामले में भी लागू होता है।
स्ट्रिंग कॉन्सटेनेशन ऑपरेटर (&) अंकगणितीय नहीं है और अंकगणित और तुलना ऑपरेटरों के बीच इसकी प्राथमिकता है।
तार्किक ऑपरेटरों के लिए प्राथमिकता का क्रम इस प्रकार है:
- तार्किक निषेध, उलटा (नहीं);
- तार्किक गुणन, संयोजन (और);
- तार्किक जोड़, वियोजन (या);
- तार्किक अपवाद(Xor);
- तार्किक समतुल्य (Eqv);
- तार्किक निहितार्थ (छोटा सा भूत)।
सशर्त अभिव्यक्तियाँ
सशर्त अभिव्यक्तियों का उपयोग प्रोग्राम कमांड के निष्पादन के क्रम को नियंत्रित करने के लिए किया जाता है और आपको संक्रमण (शाखा) और आदेशों की पुनरावृत्ति को व्यवस्थित करने की अनुमति देता है। आमतौर पर, तुलना ऑपरेटरों का उपयोग सशर्त अभिव्यक्तियों के संयोजन में किया जाता है।
यदि..तब..अन्यथा अभिव्यक्ति
यदि सशर्त जंप अभिव्यक्ति आपको तार्किक अभिव्यक्ति के परिणाम या बूलियन चर के मूल्य के आधार पर आदेशों के एक विशेष समूह को निष्पादित करने की अनुमति देती है।
दी गई शर्त पूरी होने पर एकल कमांड निष्पादित करने के लिए, एक-पंक्ति अभिव्यक्ति सिंटैक्स का उपयोग करें:
मंद एस यदि डेटपार्ट("डब्ल्यू", अब) = वीबीसोमवार तो एस = "सोमवार" एप्लीकेशन.मैसेजबॉक्स एस, "", वीबीओकेओनली
ध्यान दें कि इस मामले में अन्य अनुभाग हटा दिया गया है। कथनों के समूह को निष्पादित करने के लिए, आपको उन्हें Than और EndIf कीवर्ड के बीच संलग्न करना होगा।
मंद एस यदि डेटपार्ट('डब्ल्यू', अब) = वीबीसोमवार तो एस = 'आज सोमवार है' एप्लीकेशन.मैसेजबॉक्स एस, '''', वीबीओकेओनली एंड इफ
यदि, एक शर्त पूरी होने पर, एक कोड को निष्पादित करने की आवश्यकता होती है, और जब एक शर्त पूरी नहीं होती है, तो दूसरे कोड की आवश्यकता होती है, तो एक अन्य अनुभाग के साथ अभिव्यक्ति सिंटैक्स का उपयोग किया जाता है:
मंद एस यदि डेटपार्ट("डब्ल्यू", अब) = वीबीसोमवार तो एस = "आज सोमवार है" अन्यथा एस = "आज सोमवार नहीं है" समाप्त यदि एप्लीकेशन.मैसेजबॉक्स एस, "", वीबीओकेओनली
यदि आपको कई विकल्पों में से चुनने की आवश्यकता है, तो ElseIf निर्माण वाला सिंटैक्स उपयुक्त है:
डिम एस, डी डी = डेटपार्ट ("डब्ल्यू", अब) यदि डी = वीबीसोमवार तो एस = "सोमवार" अन्यथा यदि डी = वीबीमंगलवार तो एस = "मंगलवार" अन्यथा यदि डी = वीबीबुधवार तो एस = "बुधवार" ... समाप्त यदि आवेदन। संदेशबॉक्स एस, "", vbOkOnly
यदि कथनों को नेस्ट किया जा सकता है:
डिम एस, डी डी = डेटपार्ट ("डब्ल्यू", अब) यदि डी = वीबीसोमवार तो एस = "सोमवार" अन्यथा यदि डी = वीबीमंगलवार तो एस = "मंगलवार" अन्यथा यदि डी = वीबीबुधवार तो एस = "बुधवार" अन्यथा ... समाप्त यदि समाप्त यदि समाप्त यदि
हालाँकि सशर्त अभिव्यक्ति में ElseIf खंडों की संख्या की कोई सीमा नहीं है, लेकिन उनका बड़े पैमाने पर उपयोग करने से भ्रमित करने वाला, अपठनीय कोड हो सकता है। चयनकर्ता के मूल्य के आधार पर कई संभावित विकल्पों में से एक विकल्प का चयन करने के मामले में, सेलेक्ट केस एक्सप्रेशन का उपयोग करने की अनुशंसा की जाती है।
चयन करें..केस अभिव्यक्ति
आइए चयन अभिव्यक्ति का उपयोग करके सप्ताह के दिनों के उदाहरण को फिर से लिखें:
डिम एस केस डेटपार्ट का चयन करें ("डब्ल्यू", अब) केस वीबीसोमवार एस = "सोमवार" केस वीबीमंगलवार एस = "मंगलवार" केस वीबीबुधवार एस = "बुधवार" ... केस अन्य त्रुटि। 32000 बढ़ाएँ, "", "अज्ञात दिन सप्ताह "अंत चयन करें
चूँकि चयनकर्ता अभिव्यक्ति का मूल्यांकन केवल एक बार किया जाता है, चयन..केस का उपयोग करने से अधिक कुशल कोड प्राप्त होता है। अमान्य या अपरिष्कृत चयनकर्ता मानों को पकड़ने के लिए हमेशा केस एल्स अनुभाग का उपयोग करने की अनुशंसा की जाती है।
लूप स्टेटमेंट
अक्सर ऐसी स्थिति उत्पन्न हो जाती है जब कोड को दोबारा चलाने की आवश्यकता होती है। ऐसा करने के लिए, एक लूप स्टेटमेंट लिखें जो कुछ कमांड को बार-बार दोहराता है। लूप स्टेटमेंट का उपयोग कई स्थितियों में किया जाता है: संख्याओं की सूची पर कुल की गणना करते समय, डेटा सेट के रिकॉर्ड के माध्यम से आगे बढ़ना, या एकाधिक ऑब्जेक्ट पर कोड का ब्लॉक चलाने के लिए। निम्नलिखित अनुभागों में वर्णित कई चक्र हैं। उनमें से कुछ तब निष्पादित होते हैं जब स्थिति सत्य होती है, कुछ निष्पादित होते हैं जबकि स्थिति गलत होती है। और अंत में, ऐसे भी हैं जिन्हें निर्दिष्ट संख्या में निष्पादित किया जाता है।
करो..लूप ऑपरेटर
इस ऑपरेटर को कमांड के एक समूह को तब तक निष्पादित करने के लिए डिज़ाइन किया गया है जब तक कि दी गई स्थिति सत्य न हो जाए या जब तक वह सत्य न हो जाए। स्थिति को लूप की शुरुआत में जांचा जा सकता है:
[(जबकि | जब तक) स्थिति] लूप करें
और इसलिए अंत में:
लूप करें [(जबकि | जब तक) स्थिति]
एक्ज़िट डू कमांड एक लूप के मुख्य भाग में असीमित संख्या में दिखाई दे सकता है। आमतौर पर यदि..तब सशर्त कथन के साथ संयोजन में उपयोग किया जाता है, तो यह लूप के तुरंत बाद कथन पर नियंत्रण स्थानांतरित करने की अनुमति देता है। नेस्टेड लूप के अंदर Exit Do का उपयोग करते समय, नियंत्रण बाहरी लूप में चला जाएगा।
निम्नलिखित कोड आपको पासा बदलने की अनुमति देता है:
मंद प्रतिक्रिया, संख्या दो संख्या = इंट(6 * राउंड + 1) प्रतिक्रिया = एप्लिकेशन.मैसेजबॉक्स(संख्या और "अन्य संख्या?", "",_ vbहाँनहीं या vbप्रश्न) प्रतिक्रिया तक लूप = vbNo
जबकि..वेंड
यह Do..Loop ऑपरेटर का एक छोटा संस्करण है और जब तक स्थिति सही है तब तक आपको कमांड के एक समूह को निष्पादित करने की अनुमति देता है। ऑपरेटर सिंटैक्स:
जबकि हालत वेंड
ध्यान दें कि इस लूप में Exit Do का कोई प्रभाव नहीं पड़ता है। जबकि..वेंड लूप्स को नेस्ट किया जा सकता है।
अगले के लिए
यह लूप दिए गए आदेशों के सेट को एक निर्दिष्ट संख्या में दोहराता है। ऑपरेटर सिंटैक्स है:
काउंटर के लिए = प्रारंभ को समाप्त करने के लिए अगला
लूप शुरू होने से पहले, काउंटर वेरिएबल को वैल्यू स्टार्ट असाइन किया जाता है। इसके बाद, काउंटर की स्थिति की जाँच की जाती है।<= end, при step >= 0, या काउंटर >= अंत, एक नकारात्मक चरण के साथ। आदेशों के एक ब्लॉक को निष्पादित करने के बाद, काउंटर वैरिएबल को चरण के मूल्य से बढ़ाया जाता है और शुरुआत से ही सब कुछ दोहराया जाता है।
लूप के मुख्य भाग में काउंटर को बदलना निषिद्ध नहीं है, लेकिन इसे दृढ़ता से हतोत्साहित किया जाता है, क्योंकि इससे प्रोग्राम लॉजिक को समझना और इसे डीबग करना मुश्किल हो जाता है।
एक्ज़िट फ़ॉर लूप के मुख्य भाग में कितनी भी बार दिखाई दे सकता है। लूप्स को नेस्ट किया जा सकता है। उदाहरण के लिए, यह लूप एक त्रि-आयामी सरणी आरंभ करता है:
मंद A(9, 9, 9) मंद I, J, K I के लिए = 0 से 9 के लिए J = 0 से 9 के लिए K = 0 से 9 A(I, J, K) = 1 अगला अगला अगला
प्रत्येक के लिए..अगला
For Every..Next लूप स्टेटमेंट किसी सरणी या संग्रह के प्रत्येक तत्व के लिए कमांड के एक निर्दिष्ट सेट को दोहराता है और इसमें निम्नलिखित सिंटैक्स होता है:
समूह में प्रत्येक तत्व के लिए अगला
यदि सरणी या संग्रह में कम से कम एक तत्व है तो लूप निष्पादित किया जाता है। एग्जिट फॉर लूप बॉडी में मनमाने ढंग से कई बार दिखाई दे सकता है।
आइए निम्नलिखित कोड के साथ For Every..Next के उपयोग को स्पष्ट करें, जो ड्राइव c:\ की रूट निर्देशिका से फ़ाइलों की एक सूची प्रदर्शित करता है।
डिम fso, f, f1, fc, s सेट fso = CreateObject("Scripting.FileSystemObject") सेट f = fso.GetFolder("c:\") fc s = s और f1 में प्रत्येक f1 के लिए fc = f.फ़ाइलें सेट करें .नाम और vbNewLine अगला एप्लिकेशन.MessageBox s, "फ़ाइलें c:\", vbOkOnly
प्रक्रियाओं
मेमोरी को बचाने और प्रोग्राम की संरचना करने के लिए, कोड का एक टुकड़ा जिसे अलग-अलग स्थानों पर बार-बार बुलाया जाता है, उसे एक प्रक्रिया के रूप में स्वरूपित किया जा सकता है। वीबीस्क्रिप्ट में दो प्रकार की प्रक्रियाएं हैं: सबरूटीन्स (उप) और फ़ंक्शन (फ़ंक्शन)। सबरूटीन सब और एंड सब कीवर्ड से घिरे कथनों का एक क्रम है। सबरूटीन पैरामीटर को इनपुट के रूप में स्वीकार कर सकता है, लेकिन मान वापस नहीं करता है। एक फ़ंक्शन, एक फ़ंक्शन और एक अंतिम फ़ंक्शन के बीच कथनों का एक क्रम, एक परिणाम देता है और इसलिए इसे एक अभिव्यक्ति में उपयोग किया जा सकता है। प्रत्येक प्रक्रिया का एक नाम होना चाहिए जो मॉड्यूल के भीतर अद्वितीय हो। वैश्विक मॉड्यूल में घोषित प्रक्रियाओं के नाम पूरे प्रोजेक्ट में अद्वितीय होने चाहिए।
सबरूटीन और फ़ंक्शन की परिभाषा में निम्नलिखित सिंटैक्स है:
| निजी] उप नाम [(arglist)] अंत उप | निजी] फ़ंक्शन का नाम [(arglist)] अंत फ़ंक्शन
सार्वजनिक प्रक्रियाएँ वैश्विक हैं और सभी प्रोग्राम स्क्रिप्ट में उपलब्ध हैं। निजी प्रक्रियाएँ केवल उस स्क्रिप्ट में उपलब्ध हैं जहाँ उन्हें घोषित किया गया था। जब तक अन्यथा निर्दिष्ट न हो, घोषित प्रक्रिया सार्वजनिक है। डिफ़ॉल्ट कीवर्ड का उपयोग केवल क्लास के मुख्य भाग में किया जा सकता है और यह इस क्लास की डिफ़ॉल्ट विधि को निर्दिष्ट करने के लिए कार्य करता है।
पैरामीटर सूची में निम्नलिखित सिंटैक्स है:
वर्नाम [, ...]
पैरामीटर्स को मान (ByVal) या संदर्भ (ByRef) द्वारा पारित किया जा सकता है। डिफ़ॉल्ट रूप से, सभी पैरामीटर मान द्वारा पारित किए जाते हैं। स्थिरांक, अभिव्यक्ति के मूल्यांकन के परिणाम, केवल मूल्य द्वारा पारित किए जा सकते हैं। संदर्भ द्वारा पारित पैरामीटर को बदलने से बाहरी चर का मान बदल जाएगा। आइए हम निम्नलिखित उदाहरण का उपयोग करके एक प्रक्रिया के अंदर मापदंडों के पारित होने की व्याख्या करें:
उप गणना (बायरेफ ए, बायवैल बी, बायवैल सी) ए = सी * 2 बी = सी/2 अंत उप उप परीक्षण वार डिम वी1, वी2 वी1 = 1 वी2 = 2 डूकैलकुलेशन वी1, वी2, 10 " डूकैलकुलेशन प्रक्रिया करने के बाद " वी1 = 20" वी2 = 2 अंत उप
किसी प्रक्रिया के मुख्य भाग के अंदर घोषित चर स्थानीय होते हैं और इसके निष्पादन के पूरा होने पर नष्ट हो जाते हैं। स्थानीय चर मान सहेजे नहीं जाते हैं.
किसी फ़ंक्शन को कॉल करते समय या कॉल स्टेटमेंट का उपयोग करके सबरूटीन को कॉल करते समय पैरामीटर सूची कोष्ठक में निर्दिष्ट की जाती है। इसलिए, हम ऊपर दिए गए उदाहरण में Docalculation प्रक्रिया के लिए कॉल को इस प्रकार लिख सकते हैं:
कॉल करें गणना करें(V1, V2, 10)
अभिव्यक्ति निष्पादित करें
वीबीस्क्रिप्ट कक्षाएं
वीबीस्क्रिप्ट आपको नई कक्षाएं बनाने की अनुमति देता है, जिन्हें हम अब से वीबी कक्षाएं कहेंगे। आम तौर पर बोलते हुए, वे ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के अर्थ में पूर्ण वर्ग नहीं हैं, क्योंकि वे विरासत का समर्थन नहीं करते हैं और तदनुसार, बहुरूपता का समर्थन नहीं करते हैं। इसलिए, तीन स्तंभों में से जिन पर ऑब्जेक्ट-ओरिएंटेड प्रतिमान आधारित है, केवल इनकैप्सुलेशन ही बचा है - एक इकाई के भीतर डेटा और विधियों को संयोजित करने की क्षमता।
निम्नलिखित निर्माण का उपयोग करके एक वर्ग को परिभाषित किया गया है:
कक्षा का नाम विवरण अंतिम कक्षा
जहां नाम वर्ग का नाम है, और कथन चर, गुणों, प्रक्रियाओं या कार्यों की एक या अधिक परिभाषाएं हैं, जिन्हें वर्ग के सदस्य भी कहा जाता है। कृपया ध्यान दें कि डेल्फ़ी के विपरीत, जहां क्लास डेफिनिशन कोड में केवल प्रक्रियाओं और कार्यों की घोषणाएं होती हैं, वीबी क्लास में सदस्य कोड सीधे क्लास टेक्स्ट में लिखा जाता है।
किसी वर्ग के सदस्यों को निजी या सार्वजनिक घोषित किया जा सकता है। पूर्व केवल किसी दिए गए वर्ग के कोड के अंदर दिखाई देते हैं, जबकि बाद वाले आंतरिक कोड और बाहरी दोनों तरह से उपलब्ध होते हैं। यदि किसी वेरिएबल या फ़ंक्शन (प्रक्रिया) में सार्वजनिक या निजी की स्पष्ट परिभाषा नहीं है, तो इसे सार्वजनिक माना जाता है। किसी क्लास ब्लॉक के अंदर सार्वजनिक घोषित प्रक्रियाएँ या कार्य उस क्लास के तरीके बन जाते हैं।
पब्लिक के रूप में घोषित वेरिएबल प्रॉपर्टी गेट, प्रॉपर्टी लेट, प्रॉपर्टी सेट संरचनाओं का उपयोग करके सीधे घोषित संपत्तियों के साथ-साथ क्लास प्रॉपर्टी बन जाते हैं।
वर्ग गुणों को परिभाषित करना
हमने पहले ही ऊपर कहा है कि किसी वर्ग के क्षेत्र, स्पष्ट रूप से या परोक्ष रूप से सार्वजनिक घोषित किए गए, उसके गुण बन जाते हैं। इसके अलावा, आप प्रॉपर्टी वैल्यू (प्रॉपर्टी गेट) को पढ़ने के साथ-साथ इसे असाइन करने (प्रॉपर्टी लेट या प्रॉपर्टी सेट) के लिए विशेष कार्यों को परिभाषित करके एक क्लास प्रॉपर्टी बना सकते हैं।
ऐसे फ़ंक्शंस को परिभाषित करने का सिंटैक्स इस प्रकार है:
| निजी] संपत्ति नाम प्राप्त करें [(arglist)] [ नाम = अभिव्यक्ति] [ नाम = अभिव्यक्ति] अंतिम संपत्ति संपत्ति नाम दें (मूल्य) अंतिम संपत्ति संपत्ति सेट नाम (संदर्भ) अंतिम संपत्ति
केवल एक फ़ंक्शन को परिभाषित करके, पढ़ें या असाइन करके, आप एक ऐसी संपत्ति बना सकते हैं जो क्रमशः केवल पढ़ने या लिखने के लिए है। प्रॉपर्टी लेट प्रक्रिया का उपयोग सरल डेटा प्रकार निर्दिष्ट करने के लिए किया जाता है, और प्रॉपर्टी सेट प्रक्रिया का उपयोग किसी ऑब्जेक्ट के संदर्भ को पारित करने के लिए किया जाता है। कृपया ध्यान दें कि सभी तीन फ़ंक्शन इनपुट के रूप में पैरामीटर की एक मनमानी सूची ले सकते हैं। इस तरह, आप तत्व सूचकांक को तर्क के रूप में पास करके, उदाहरण के लिए, सरणी गुणों को व्यवस्थित कर सकते हैं।
VB वर्ग का एक उदाहरण बनाना और नष्ट करना
वीबी क्लास का एक उदाहरण बनाना न्यू ऑपरेटर का उपयोग करके किया जाता है।
डिम एक्स सेट एक्स = नया क्लासनाम
पहले से बनाए गए उदाहरण का विनाश कोड के ब्लॉक के पूरा होने पर स्वचालित रूप से होता है जहां संबंधित चर घोषित किया गया था और बशर्ते कि इसका कोई बाहरी संदर्भ न हो। यदि आपको इंस्टेंस को मैन्युअल रूप से नष्ट करने की आवश्यकता है, तो आपको वेरिएबल को कुछ भी नहीं मान निर्दिष्ट करना होगा।
' एक वेरिएबल घोषित करना और वर्ग का एक उदाहरण बनाना डिम एक्स सेट एक्स = नया क्लासनाम ... ' वर्ग के एक उदाहरण का उपयोग करना... ' वर्ग के एक उदाहरण को नष्ट करना सेट एक्स = नोटिंग ...
ईवेंट प्रारंभ करें और समाप्त करें
इनिशियलाइज़ इवेंट तब होता है जब किसी क्लास का एक उदाहरण बनाया जाता है, और टर्मिनेट इवेंट तब होता है जब यह नष्ट हो जाता है। डेवलपर अपने स्वयं के ईवेंट डेटा हैंडलर को परिभाषित कर सकता है। नीचे ऑब्जेक्ट निर्माण और विलोपन घटनाओं का उपयोग करने का एक उदाहरण दिया गया है:
क्लास टेस्टक्लास "इनिशियलाइज़ इवेंट हैंडलर की परिभाषा। प्राइवेट सब क्लास_इनिशियलाइज़ MsgBox("टेस्टक्लास स्टार्टेड") एंड सब" टर्मिनेट इवेंट हैंडलर की परिभाषा। प्राइवेट सब क्लास_टर्मिनेट MsgBox ("टेस्टक्लास समाप्त") एंड सब एंड क्लास "टेस्टक्लास क्लास का एक उदाहरण बनाना।" संदेश "टेस्टक्लास शुरू हुआ" प्रदर्शित किया जाएगा सेट एक्स = नया टेस्टक्लास "इंस्टेंस को नष्ट करना।" संदेश "टेस्टक्लास समाप्त हो गया" सेट प्रदर्शित किया जाएगा एक्स = कुछ नहीं
विस्तार
विज़ुअल बेसिक स्क्रिप्ट
हमें वीबीएस स्क्रिप्ट की आवश्यकता क्यों है?
वीबीएस स्क्रिप्ट विंडोज़ सिस्टम पर उपयोगकर्ता क्रियाओं को स्वचालित करने के लिए एक शक्तिशाली समाधान है। इस प्रकार की स्क्रिप्ट का उपयोग आमतौर पर इसके लिए किया जाता है:
- जटिल परिदृश्य बनाना;
- अन्य अनुप्रयोगों और पुस्तकालयों से वस्तुओं का उपयोग करना;
- स्क्रिप्ट निष्पादन के दौरान विंडोज़ छिपाना;
- स्क्रिप्ट तर्क का एन्क्रिप्शन।
वीबीएस स्क्रिप्ट का उपयोग मुख्य रूप से डेटा प्रोसेसिंग, सिस्टम प्रबंधन, उपयोगकर्ता और कंप्यूटर खातों के साथ काम करने, कार्यालय अनुप्रयोगों के साथ बातचीत करने, डेटाबेस और अन्य जटिल कार्यों के साथ काम करने के लिए किया जाता है।
बुनियादी प्रावधान
स्क्रिप्ट भाषा, सामग्री और एन्क्रिप्शन के आधार पर, निम्न प्रकार की स्क्रिप्ट पाई जाती हैं:
- वीबीएस - विज़ुअल बेसिक स्क्रिप्ट
- vbe - एन्क्रिप्टेड विज़ुअल बेसिक स्क्रिप्ट
- जेएस - जावा स्क्रिप्ट
- जेएसई - एन्क्रिप्टेड जावा स्क्रिप्ट
- wsh - स्क्रिप्ट सेटिंग्स
- डब्ल्यूएसएफ - एक्सएमएल फ़ेडरेटेड स्क्रिप्ट
इस लेख में मैं वीबीएस प्रकार की स्क्रिप्ट देखूंगा।
स्क्रिप्ट आमतौर पर विंडोज नोटपैड में संपादित की जाती हैं, लेकिन मैं नोटपैड 2 का उपयोग करने की सलाह देता हूं, जो विज़ुअल बेसिक भाषा कीवर्ड को हाइलाइट करता है और स्क्रिप्ट के मुख्य भाग को प्रारूपित करने में मदद करता है। तो, एक वीबीएस स्क्रिप्ट *.वीबीएस नाम की एक नियमित टेक्स्ट फ़ाइल है, जिसे नोटपैड में आसानी से संपादित किया जा सकता है और कंसोल में नाम पर डबल-क्लिक करके या कॉल करके निष्पादित किया जा सकता है।
जैसा कि ऊपर वर्णित है, स्क्रिप्ट संकलित नहीं की जाती हैं, बल्कि उनकी व्याख्या की जाती है। अर्थात्, किसी स्क्रिप्ट को संसाधित करने के लिए, सिस्टम में एक वीबीएस भाषा दुभाषिया होना चाहिए, और विंडोज़ में ऐसे दो दुभाषिए भी हैं: विंडो डब्ल्यूस्क्रिप्ट और कंसोल सीस्क्रिप्ट - दोनों दुभाषिए विंडोज़ स्क्रिप्ट होस्ट (डब्ल्यूएसएच) हैं।
डिफ़ॉल्ट रूप से, सभी स्क्रिप्ट WScript के माध्यम से निष्पादित की जाती हैं, अर्थात, किसी सेटिंग की आवश्यकता नहीं होती है, लेकिन कंसोल विंडो में स्क्रिप्ट को निष्पादित करने के लिए, आपको इसे CScript के माध्यम से चलाने की आवश्यकता होती है, या CScript को डिफ़ॉल्ट दुभाषिया के रूप में सेट करना होता है। ऐसा करने के लिए, आपको कमांड लाइन पर निम्नलिखित चलाने की आवश्यकता है:
सीस्क्रिप्ट //एच:सीस्क्रिप्ट
जिसके बाद सभी स्क्रिप्ट कंसोल मोड में निष्पादित की जाएंगी। विंडो मोड पर वापसी निम्नलिखित कमांड के साथ की जाती है:
सीस्क्रिप्ट //एच:डब्लूस्क्रिप्ट
निम्नलिखित नियम विज़ुअल बेसिक में काम करते हैं:
- लाइन की लंबाई सीमित नहीं है;
- चरित्र का मामला संवेदनशील नहीं है;
- मापदंडों के बीच रिक्त स्थान की संख्या को ध्यान में नहीं रखा जाता है;
- कमांड लाइन को तोड़ा जा सकता है, और ब्रेक वाली जगह पर आपको प्रतीक "_" डालना होगा;
- अधिकतम चर नाम की लंबाई 255 अक्षर है;
- टिप्पणियाँ " " " प्रतीक द्वारा दर्शायी जाती हैं।
" === स्क्रिप्ट सूचना शीर्षलेख === " स्क्रिप्ट का नाम: " स्क्रिप्ट का नाम; " दिनांक: " संशोधन तिथि; " लेखक: " लेखक; " विवरण: " विवरण; " === आरंभीकरण ब्लॉक === विकल्प स्पष्ट "निर्देश, जो" चर के स्वचालित निर्माण पर रोक लगाता है; धुंधला
चर
डिफ़ॉल्ट रूप से, स्क्रिप्ट में वेरिएबल पहली बार स्क्रिप्ट बॉडी में उपयोग किए जाने पर स्वचालित रूप से घोषित किए जाते हैं, जब तक कि विकल्प स्पष्ट निर्देश द्वारा निषिद्ध न हो। यदि आप स्क्रिप्ट की शुरुआत में विकल्प स्पष्ट निर्देश घोषित करते हैं, तो निम्नलिखित संरचनाओं का उपयोग करके सभी चर को पहले से परिभाषित किया जाना चाहिए:
धुंधला
निम्नलिखित निर्माण का उपयोग करके स्क्रिप्ट की शुरुआत में स्थिरांक घोषित किए जाते हैं:
कॉन्स्ट
पहला मान दर्ज करने के बाद वेरिएबल प्रकार स्वचालित रूप से असाइन किया जाता है। विज़ुअल बेसिक में निम्नलिखित डेटा प्रकार मौजूद हैं:
- खाली - अप्रारंभीकृत चर;
- शून्य - खाली चर;
- बूलियन - तार्किक प्रकार, संभावित मान: गलत, सही या 0, 1;
- बाइट - 8-बिट अहस्ताक्षरित पूर्णांक, संभावित मान: 0 ..255;
- पूर्णांक - 32-बिट पूर्णांक, संभावित मान: -32768 .. 32767;
- लंबा - 64-बिट पूर्णांक, संभावित मान: -2147483648 .. 2147483647;
- मुद्रा - मौद्रिक प्रकार, संभावित मान: -922337203685477.5808 से 922337203685477.5807;
- एकल - फ़्लोटिंग पॉइंट संख्या, संभावित मान: -3.402823e38 .. -1.401298e-45 नकारात्मक संख्याओं के लिए और 1.401298e-45 .. 3.402823e38 सकारात्मक संख्याओं के लिए;
- डबल - फ़्लोटिंग पॉइंट नंबर, संभावित मान: 1.79769313486232e308 .. -4.94065645841247e-324 नकारात्मक संख्याओं के लिए और 4.94065645841247e-324 .. 1.79769313486232e308 सकारात्मक संख्याओं के लिए;
- दिनांक - दिनांक, संभावित मान: 01/01/1900 और 01/31/9999;
- स्ट्रिंग - स्ट्रिंग वैरिएबल, क्षमता 2 बिलियन वर्ण तक;
- वस्तु - किसी वस्तु का सूचक;
- त्रुटि - त्रुटि कोड.
डेटा को प्रकार के अनुपालन के लिए जांचा जा सकता है, साथ ही यदि मान इसकी अनुमति देते हैं तो इसे एक प्रकार से दूसरे प्रकार में परिवर्तित किया जा सकता है। डेटा प्रकारों पर संचालन के लिए निम्नलिखित कमांड का उपयोग किया जाता है:
वारटाइप(
जैसा कि ऊपर उल्लेख किया गया है, विज़ुअल बेसिक वेरिएबल नामों पर सख्त प्रतिबंध नहीं लगाता है, लेकिन साथ ही, वेरिएबल नामों के लिए दिशानिर्देश हैं ताकि स्क्रिप्ट टेक्स्ट में डेटा प्रकार को आसानी से पहचाना जा सके। ऐसा करने के लिए, चर नाम से पहले सशर्त प्रतीकों को लगाने की अनुशंसा की जाती है जो चर के प्रकार को निर्धारित करते हैं:
- iValueName - संख्यात्मक प्रकार
- sValueName - स्ट्रिंग प्रकार
- bValueName - बूलियन प्रकार
- dValueName - दिनांक
- oValueName - वस्तु
- cValueName - स्थिरांक
- aArrayName - सारणी
वीबीएस स्क्रिप्ट में, वेरिएबल के सरणियों का उपयोग करना संभव है जो आपको सूचियों, तालिकाओं और यहां तक कि अधिक जटिल संरचनाओं को संग्रहीत करने की अनुमति देता है। एक-आयामी सरणियाँ (सूचियाँ) गतिशील हो सकती हैं, अर्थात, वे स्क्रिप्ट चलने के साथ-साथ अपने आयाम को बदलने की अनुमति देते हैं। सभी सरणियों को डिम कमांड के साथ घोषित किया गया है:
धुंधला
सरणियों का उपयोग करने का उदाहरण
Dim aMyArray1(10,10) "11x11 आयामों के साथ एक स्थिर सरणी बनाता है; Dim aMyArray2() "एक गतिशील सरणी बनाता है; aMyArray1(0,0) = "हैलो" " सरणी भरना; aMyArray1(0,1) = "लोग" " सरणी भरना; aMyArray1(1,0) = "World" " सरणी भरना।
डायनामिक ऐरे का उपयोग करने से पहले, इसे ReDim कमांड का उपयोग करके वर्तमान आयाम को इंगित करने की आवश्यकता होती है, जिसके बाद ऐरे को स्क्रिप्ट में कहीं भी पुन: स्वरूपित किया जा सकता है, या तो पूरे ऐरे को साफ़ किया जा सकता है या संरक्षित कमांड के साथ पुराने सेल मानों को सहेजा जा सकता है:
ReDim aMyArray2(0) " एक तत्व से एक सरणी बनाना; aMyArray2(0) = "Hello" " सरणी भरना; ReDim aMyArray2(1) "पुरानी सारणी को हटाना और अन्य तत्वों से एक नई सारणी बनाना; aMyArray2(0) = "Hello" " सरणी भरना; aMyArray2(1) = "World" " सरणी भरना; ReDim संरक्षित aMyArray2(2) " तीन तत्वों की एक सरणी बनाते हुए, कोशिकाओं में तत्वों के पुराने मानों को छोड़ दें जहां वे थे; aMyArray2(1) = "!" "एक सरणी भरना; aMyArray2 मिटाएं" एक सरणी हटाना।
किसी सरणी के आयाम का पता लगाने के लिए, वे आमतौर पर यूबाउंड फ़ंक्शन का उपयोग करते हैं, जिस पर डेटा के साथ काम करने के लिए अन्य कार्यों के साथ नीचे चर्चा की जाएगी।
स्थिति के अनुसार शाखाकरण
शाखाओं के बिना एक भी पूर्ण परिदृश्य पूरा नहीं होता, शाखाएं कुछ अंतर्निहित शर्त पूरी होने या न होने पर सही रास्ता चुनने में मदद करती हैं। दूसरे शब्दों में, शाखाएँ स्क्रिप्ट के तर्क को लागू करती हैं। वीबीएस स्क्रिप्ट कई शाखा तंत्रों को लागू करती हैं। आइए उन्हें क्रम से देखें।
एक शर्त के अनुसार निष्पादित एक क्रिया के लिए निर्माण:
अगर
किसी शर्त के आधार पर की जाने वाली कई कार्रवाइयों का डिज़ाइन:
अगर
कांटा डिजाइन:
अगर
निर्माण "कई रास्तों में कांटा" (विकल्प सीआईएफ):
अगर
उपरोक्त सभी निर्माणों में, निम्नलिखित नियम लागू होता है: “यदि शर्त पूरी हो जाती है
निर्माण "कई रास्तों में कांटा" (विकल्प withSelect):
मामले का चयन करें
इस निर्माण में निम्नलिखित नियम काम करता है: “यदि किसी चर का मान
साइकिल
लूप्स का उपयोग आमतौर पर बार-बार की जाने वाली क्रियाओं को व्यवस्थित करने या सरणी तत्वों के माध्यम से पुनरावृत्त करने के लिए किया जाता है। वीबीएस स्क्रिप्ट में, कई प्रकार के लूप व्यवस्थित होते हैं: एक नियमित लूप, अज्ञात संख्या में पुनरावृत्तियों वाला एक लूप, एक सशर्त लूप।
एक नियमित लूप को फॉर - नेक्स्ट संरचना द्वारा व्यवस्थित किया जाता है, जिसके तर्क काउंटर के नाम जैसे पैरामीटर निर्दिष्ट करते हैं (
के लिए
यदि आपको लूप चलने के दौरान मानों पर पुनरावृत्ति रोकने की आवश्यकता है, तो आप Exit For कमांड का उपयोग करके ऐसा कर सकते हैं
के लिए
अज्ञात संख्या में पुनरावृत्तियों वाला एक लूप आमतौर पर किसी ऑब्जेक्ट के संग्रह में सभी मानों के माध्यम से पुनरावृत्त करने के लिए उपयोग किया जाता है जब इसका आयाम अज्ञात होता है। यह संरचना सभी मानों पर पुनरावृति करेगी (
प्रत्येक के लिए
oFiles में प्रत्येक oCurrentFile के लिए WScript.Echo oCurrentFile.Name अगला
कुछ शर्त पूरी होने पर डेटा को संसाधित करने के लिए सशर्त लूप का उपयोग किया जाता है। ऐसे लूप दो प्रकार के होते हैं: चक्र की शुरुआत में एक चेक के साथ और अंत में एक चेक के साथ।
शर्त पूरी होने तक लूप करें, शुरुआत में जाँच करें
जबकि ऐसा
शर्त पूरी होने तक लूप करें, शुरुआत में जाँच करें
तब तक करो
जैसा कि ऊपर बताया गया है, शर्तों को लूप के अंत में रखा जा सकता है। इस मामले में, लूप की बॉडी को कम से कम एक बार निष्पादित किया जाएगा। नियमित लूप की तरह, एक शर्त वाले लूप को Exit Do कमांड से बाधित किया जा सकता है:
करना
अंतर्निहित कार्य
डेटा के साथ काम करने और उनकी प्रक्रियाओं और कार्यों के निर्माण के लिए, विज़ुअल बेसिक डेवलपर्स ने पहले से ही स्क्रिप्ट के आधार - बुनियादी कार्यों का ध्यान रखा है। वीबीएस स्क्रिप्ट दिनांक, स्ट्रिंग और संख्याओं के साथ-साथ बुनियादी इनपुट-आउटपुट प्रक्रियाओं और नेटवर्किंग प्रक्रियाओं के साथ काम करने के लिए कार्य करती है। आइए अंतर्निहित कार्यों पर एक नज़र डालें।
दिनांक प्रसंस्करण कार्य:
दिनांक "वर्तमान दिनांक लौटाएं; समय" वर्तमान समय लौटाएं; अब "वर्तमान दिनांक और समय लौटाएँ; DateDiff(
स्ट्रिंग प्रसंस्करण कार्य:
एएससी(
गणित के कार्य:
रैंडमाइज़ " यादृच्छिक संख्या इंजन को आरंभ करता है (कुछ नहीं लौटाता); Rnd " 0 से 1 तक एक यादृच्छिक गैर-पूर्णांक मान लौटाता है; एटीएन(
और, निःसंदेह, उल्लिखित कार्यों के अलावा, स्क्रिप्ट सभी सरलतम गणितीय और तार्किक परिचालनों का समर्थन करती हैं:
- = - असाइनमेंट ऑपरेटर;
- + - दो संख्याओं का योग;
- - - दो संख्याओं का घटाव;
- * - दो संख्याओं का गुणन;
- / - दो संख्याओं का विभाजन;
- \ - दो संख्याओं का पूर्णांक विभाजन;
- मॉड - दो संख्याओं के विभाजन का शेष भाग;
- ^ - घातांक;
- & - दो तारों का संयोजन;
- है - दो वस्तुओं की तुलना;
- Eqv - दो भावों की तुलना;
- नहीं - तार्किक निषेध संक्रिया;
- और - तार्किक संयोजन संक्रिया;
- या - विच्छेदन की तार्किक संक्रिया;
- Xor - तार्किक बहिष्करण ऑपरेशन;
- छोटा सा भूत निहितार्थ का तार्किक संचालन है।
संचालन का क्रम सभी प्रोग्रामिंग भाषाओं की तरह निर्धारित किया जाता है: पहले कोष्ठक में संचालन किया जाता है, फिर कार्यों की गणना की जाती है, फिर गुणा और भाग के संचालन, इसके बाद जोड़ और घटाव, और तार्किक संचालन गणना को पूरा करते हैं।
कस्टम कार्य
विज़ुअल बेसिक में लिखी गई स्क्रिप्ट आपको कस्टम प्रक्रियाओं और कार्यों को परिभाषित करने और उन्हें मुख्य प्रोग्राम से कॉल करने की अनुमति देती है। किसी प्रक्रिया और फ़ंक्शन के बीच व्यावहारिक रूप से कोई अंतर नहीं है, अंतर इन दिनचर्याओं के तार्किक अर्थ में निहित है: फ़ंक्शन का उपयोग आमतौर पर कुछ मूल्य की गणना करने के लिए किया जाता है, और प्रक्रियाओं का उपयोग क्रियाएं करने के लिए किया जाता है। हालाँकि, प्रक्रियाएँ और फ़ंक्शन दोनों संचालन कर सकते हैं और मानों को मुख्य प्रोग्राम में पास कर सकते हैं। इसके बावजूद, हमें इन सबरूटीन्स के उद्देश्य के बारे में नहीं भूलना चाहिए: गणना के लिए कार्य, कार्यों के लिए प्रक्रियाएँ।
फ़ंक्शन ऑपरेटर द्वारा एक फ़ंक्शन घोषित किया जाता है, उसके बाद उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन का नाम दिया जाता है, जो विज़ुअल बेसिक भाषा के किसी भी आरक्षित शब्द से मेल नहीं खाना चाहिए, फिर पैरामीटर के रूप में सबरूटीन में पारित किए जाने वाले वेरिएबल इंगित किए जाते हैं - निर्दिष्ट करना इस निर्माण में वेरिएबल्स का अर्थ है सबरूटीन वेरिएबल्स (फ़ंक्शन के लिए घोषणा वेरिएबल्स) के लिए मेमोरी सेल आवंटित करना। उपप्रोग्राम के मुख्य भाग में, स्क्रिप्ट की संरचना एक नियमित कार्यक्रम से भिन्न नहीं होती है (यहां आप अतिरिक्त चर घोषित कर सकते हैं, संचालन कर सकते हैं, अन्य कार्यों और प्रक्रियाओं का उपयोग कर सकते हैं); कुछ मान पर कार्य करें - यह मान मुख्य प्रोग्राम में वापस कर दिया जाएगा। आप एक्ज़िट फ़ंक्शन स्टेटमेंट का उपयोग करके किसी फ़ंक्शन के निष्पादन को बाधित कर सकते हैं, लेकिन इस मामले में आपको फ़ंक्शन को कुछ मान निर्दिष्ट करना याद रखना चाहिए, अन्यथा स्क्रिप्ट एक त्रुटि उत्पन्न करेगी। फ़ंक्शन एंड फ़ंक्शन स्टेटमेंट के साथ समाप्त होता है।
कार्य परिभाषा
समारोह
किसी फ़ंक्शन को कॉल करना
एक प्रक्रिया को एक फ़ंक्शन के समान ही परिभाषित किया जाता है, लेकिन एक अलग -सब ऑपरेटर के साथ। चूँकि प्रक्रिया मुख्य प्रोग्राम में कोई मान नहीं लौटाती है, इसलिए प्रक्रिया से बाहर निकलने से पहले कोई असाइनमेंट स्टेटमेंट नहीं होता है। आप एक्ज़िट सब कमांड का उपयोग करके प्रक्रिया के निष्पादन को बाधित कर सकते हैं, और संपूर्ण निर्माण एंड सब ऑपरेटर के साथ समाप्त होता है। मुख्य प्रोग्राम में किसी प्रक्रिया को कॉल करने के लिए, आपको कीवर्ड कॉल और आवश्यक तर्कों के साथ फ़ंक्शन के नाम का उपयोग करना होगा। (कॉल कीवर्ड वैकल्पिक है, लेकिन मैं गलत प्रक्रिया कॉल से बचने के लिए इसका उपयोग करने की सलाह देता हूं।)
प्रक्रिया परिभाषा
विषय
एक प्रक्रिया को कॉल करना
वैसे, प्रक्रियाएँ और कार्य स्क्रिप्ट के अंत में स्थित होने चाहिए।
जब सबरूटीन चल रहा होता है, तो स्क्रिप्ट के मुख्य भाग में वेरिएबल्स के मान नहीं बदलते हैं, भले ही सबरूटीन में समान नाम के वेरिएबल हों। सबरूटीन के लिए मुख्य स्क्रिप्ट वेरिएबल्स के मानों को बदलने में सक्षम होने के लिए, सबरूटीन तर्कों में वेरिएबल प्रॉपर्टी को ByRef के रूप में सेट करना आवश्यक है। डिफ़ॉल्ट रूप से, सभी वेरिएबल्स को ByVal प्रॉपर्टी से परिभाषित किया जाता है।
विषय
इस मामले में तर्क
स्क्रिप्ट निष्पादन त्रुटियों को संभालना
डिफ़ॉल्ट रूप से, सभी त्रुटियाँ स्क्रिप्ट द्वारा स्वचालित रूप से संसाधित होती हैं, और यदि कोई त्रुटि होती है, तो स्क्रिप्ट चलना बंद कर देती है। स्वचालित त्रुटि प्रबंधन को अक्षम करने के लिए, आपको विशेष ऑन एरर रिज्यूमे नेक्स्ट निर्देश का उपयोग करने की आवश्यकता है, जो स्वचालित त्रुटि प्रबंधन को अक्षम करता है और त्रुटियां होने पर भी स्क्रिप्ट जारी रखता है। त्रुटियों को मैन्युअल रूप से संभालने के लिए, आपको अंतर्निहित एरर ऑब्जेक्ट तक पहुंचने की आवश्यकता है, जो त्रुटि स्थिति को संग्रहीत करता है। एरर ऑब्जेक्ट में निम्नलिखित गुण और विधियाँ हैं:
संख्या " अंतिम त्रुटि की संख्या लौटाएं; विवरण " अंतिम त्रुटि का विवरण लौटाएं; परीक्षण त्रुटि को कॉल करते हुए "ऑब्जेक्ट को साफ़ करना त्रुटि; बढ़ाएँ" को साफ़ करें।
मैन्युअल त्रुटि प्रबंधन का उदाहरण:
त्रुटि पर फिर से शुरू करें अगला iTotalPoints = InputBox(''अंकों की कुल संख्या दर्ज करें'') iNumberOfTests = InputBox(''परीक्षणों की संख्या दर्ज करें'') iAvarage = iTotalPoints / iNumberOfTests चयन करें केस त्रुटि संख्या केस 0 "कोई त्रुटि नहीं; WScript.Echo" औसत स्कोर = "& CStr(iAvarage) केस 11" शून्य से विभाजन; WScript.Echo "परीक्षणों की संख्या शून्य नहीं हो सकती" केस 13 "प्रकार बेमेल; WScript.Echo "आपने एक गैर-संख्यात्मक मान दर्ज किया है "केस अन्यथा" कोई त्रुटि नहीं; WScript.Echo "अज्ञात त्रुटि WScript.Quit" अंत चुनें
वस्तुएँ, उनकी विधियाँ और गुण
वीबीएस स्क्रिप्ट, अपने मूल विज़ुअल बेसिक की तरह, एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है, यानी मुख्य अवधारणा ऑब्जेक्ट और कक्षाओं की अवधारणा है
क्लास एक प्रकार है जो वस्तुओं की संरचना का वर्णन करता है। एक वस्तु का मतलब कुछ ऐसा होता है जिसका एक निश्चित व्यवहार और प्रतिनिधित्व का तरीका होता है, एक वस्तु एक वर्ग का एक उदाहरण है; एक वर्ग की तुलना उस ब्लूप्रिंट से की जा सकती है जिसके अनुसार वस्तुएं बनाई जाती हैं। आमतौर पर, कक्षाएं इस तरह से डिज़ाइन की जाती हैं कि उनकी वस्तुएं डोमेन की वस्तुओं से मेल खाती हैं।
इसलिए, किसी ऑब्जेक्ट के साथ काम करने के लिए, आपको पहले आवश्यक लाइब्रेरी से कक्षाओं का उपयोग करके इसे बनाना होगा:
तय करना
आप किसी ऑब्जेक्ट को कुछ भी नहीं मान निर्दिष्ट करके हटा सकते हैं:
तय करना
विंडोज़ स्क्रिप्ट होस्ट जिन सभी ऑब्जेक्ट्स के साथ काम करता है उनमें विधियाँ और गुण होते हैं। किसी विधि तक पहुंचने के लिए, आपको एक ऑब्जेक्ट निर्दिष्ट करना होगा, उसके बाद एक बिंदु - आवश्यक पैरामीटर वाली एक विधि।
गुणों के साथ स्थिति समान है, लेकिन गुणों को चर और अन्य गुणों में असाइन और पढ़ा जा सकता है, हालांकि, आपको चर और गुणों के डेटा प्रकार को ध्यान में रखना चाहिए, अन्यथा स्क्रिप्ट डेटा प्रकार असंगतता त्रुटि उत्पन्न करेगी।
उदाहरण। फ़ाइल सिस्टम ऑब्जेक्ट बनाना, फ़ोल्डर निर्माण विधि को कॉल करना, ऑब्जेक्ट को हटाना। oFSO सेट करें = CreateObject("Scripting.FileSystemObject") oFSO.CreateFolder("C:\Test") सेट करें oFSO = कुछ नहीं सेट करें ध्यान दें कि "ऑब्जेक्ट" शब्द स्क्रिप्ट लॉजिक को संदर्भित करता है, फ़ाइल सिस्टम लॉजिक को नहीं। यानी, जब हम कहते हैं "किसी ऑब्जेक्ट को हटाना", तो हमारा मतलब एक तार्किक स्क्रिप्ट ऑब्जेक्ट से है जो किसी भी तरह से फ़ाइल सिस्टम के किसी भी हिस्से को हटाने को प्रभावित नहीं करता है। यह पता लगाने के लिए कि आपके ऑपरेटिंग सिस्टम में कौन सी लाइब्रेरी मौजूद हैं, लाइब्रेरी में शामिल कक्षाएं, उनकी विधियां और गुण, आप ऑब्जेक्ट एक्सप्लोरर का उपयोग कर सकते हैं, उदाहरण के लिए माइक्रोसॉफ्ट वर्ड से: यदि कोई लाइब्रेरी सूची में प्रतिबिंबित नहीं होती है, तो इसे टूल्स -> संदर्भ मेनू के माध्यम से जोड़ा जा सकता है। स्क्रिप्ट में ऐसी विधियाँ होती हैं जो किसी भी वर्ग का हिस्सा नहीं होती हैं; वे सीधे स्क्रिप्ट बॉडी में उपलब्ध होती हैं: संदेशबॉक्स( टेक्स्ट के लिए पूछने वाला एक संवाद बॉक्स प्रदर्शित करने और फिर दर्ज किए गए टेक्स्ट के साथ एक विंडो संदेश प्रदर्शित करने का एक उदाहरण। MyValue = InputBox("टेक्स्ट दर्ज करें", "पहली विंडो", "टेक्स्ट यहां दर्ज किया जाना चाहिए") MyResult = MsgBox(MyValue, 1, "दूसरी विंडो") WScript रूट क्लास के तरीकों और गुणों के लिए किसी ऑब्जेक्ट के निर्माण की आवश्यकता नहीं होती है - वे स्क्रिप्ट के मुख्य भाग में सीधे उपयोग के लिए स्वचालित रूप से उपलब्ध होते हैं। CreateObject( हम अन्य वर्गों के उदाहरणों में इन विधियों और गुणों के उपयोग पर अधिक विस्तार से चर्चा करेंगे। ऑपरेटिंग सिस्टम के साथ काम करने के लिए, एक विशेष शेल क्लास का उपयोग किया जाता है, जो आपको प्रोग्राम लॉन्च करने, रजिस्ट्री बदलने, शॉर्टकट बनाने, सिस्टम फ़ोल्डर्स और सिस्टम वेरिएबल्स तक पहुंचने और सिस्टम लॉग तक पहुंचने जैसे ऑपरेशन करने की अनुमति देता है। तो, शेल वर्ग की विधियाँ और गुण: विस्तारपर्यावरणस्ट्रिंग्स( उदाहरण। शेल वर्ग की विधियों और गुणों का उपयोग करना। " शेल वर्ग का एक ऑब्जेक्ट बनाना सेट oShell = Wscript.CreateObject("WScript.Shell") " कैलकुलेटर चलाना oShell.Run("calc.exe") " Delay WScript.Sleep(100) " नोटपैड चलाना oShell.Run ("नोटपैड.एक्सई") " विलंब WScript.Sleep(100) " कैलकुलेटर विंडो पर स्विच करें oShell.AppActivate "कैलकुलेटर" " विलंब WScript.Sleep(100) " कीस्ट्रोक्स अनुकरण करें oShell.SendKeys("1(+)2(= )") " डेस्कटॉप पर पथ प्राप्त करें sDesktopPath = oShell.SpecialFolders("Desktop") " एक शॉर्टकट ऑब्जेक्ट बनाना सेट oLink = oShell.CreateShortcut(sDesktopPath & "\Test.lnk") " एक शॉर्टकट सेट करना oLink.TargetPath = WScript .ScriptFullName oLink.WindowStyle = 1 oLink .Hotkey = "CTRL+SHIFT+T" oLink.IconLocation = "notepad.exe,0" oLink.Description = "Test link" oLink.WorkingDirectory = sDesktopPath oLink.Save " एक पर्यावरण ऑब्जेक्ट बनाना और इसमें सिस्टम गुण प्राप्त करना सेट करें oSysEnv = oShell.Environment("SYSTEM") " स्क्रीन पर प्रोसेसर की संख्या के बारे में एक संदेश प्रदर्शित करें MyResult = oShell.Popup("प्रोसेसर की संख्या:" और oSysEnv("NUMBER_OF_PROCESSORS"), _ 3, "संदेश", 0) "फ़ोल्डर पथ प्राप्त करें विंडोज़ और स्क्रीन पर एक संदेश प्रदर्शित करना MyResult = oShell.Popup("Windows निर्देशिका: " & _ oShell.ExpandEnvironmentStrings("%WINDIR%"), 3, "संदेश" , 0) " रजिस्ट्री कुंजी को पढ़ना और WScript स्क्रीन पर उसका मान प्रदर्शित करना। Echo oShell.RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\ProductID") " रजिस्ट्री में एक स्ट्रिंग मान लिखें MyResult = oShell.RegWrite( "HKCU\ScriptEngine\Value", "My वैल्यू") "रजिस्ट्री में एक संख्यात्मक मान लिखें MyResult = oShell.RegWrite("HKCU\ScriptEngine\Key", 1, "REG_DWORD") " एक रजिस्ट्री कुंजी को हटाना MyResult = oShell. रेगडिलीट("HKCU\ScriptEngine\") " सिस्टम लॉग में एक ईवेंट लिखना MyResult = oShell.LogEvent(0 , "टेस्ट स्क्रिप्ट पूर्ण") जैसा कि हम पहले ही देख चुके हैं, वीबीएस स्क्रिप्ट विंडोज़ शेल के साथ काम कर सकती हैं, लेकिन यह उनकी एकमात्र क्षमता नहीं है। नेटवर्क क्लास का उपयोग करके, आप नेटवर्क ऑब्जेक्ट तक पहुंच और प्रबंधन कर सकते हैं। आइए नेटवर्क क्लास पर करीब से नज़र डालें: कंप्यूटरनाम " कंप्यूटर नाम लौटाएं; यूजरडोमेन " डोमेन नाम लौटाएं; उपयोगकर्ता नाम "उपयोगकर्ता नाम लौटाएं; EnumNetworkDrives" मैप किए गए नेटवर्क ड्राइव की एक सूची लौटाएं; नेटवर्क ड्राइव मैप करें( उदाहरण। नेटवर्क क्लास के तरीकों और गुणों का उपयोग करना। " नेटवर्क सेट क्लास का एक ऑब्जेक्ट बनाना oNetwork = WScript.CreateObject("WScript.Network") " कंप्यूटर नाम WScript.Echo के बारे में एक संदेश प्रदर्शित करना "कंप्यूटर नाम = " और oNetwork.ComputerName " के नाम के बारे में एक संदेश प्रदर्शित करना वर्तमान उपयोगकर्ता WScript.Echo "उपयोगकर्ता नाम = " और oNetwork.UserDomain और "\" और oNetwork.UserName " एक नेटवर्क ड्राइव को मैप करना oNetwork.MapNetworkDrive "Z:" "\\Server\Share" " मैप किए गए नेटवर्क ड्राइव का एक संग्रह प्राप्त करना सेट oDrives = oNetwork.EnumNetworkDrives " मैप किए गए नेटवर्क ड्राइव के बारे में संदेश प्रदर्शित करना i=0 के लिए oDrives.Count -1 चरण 2 WScript.Echo "Drive" & oDrives.Item(i) & " = " & oDrives.Item(i+1) अगला " एक नेटवर्क ड्राइव को हटाना oNetwork.RemoveNetworkDrive "Z:" " एक नेटवर्क प्रिंटर को कनेक्ट करना oNetwork.AddPrinterConnection "LPT1", "\\Server\Printer" " डिफ़ॉल्ट प्रिंटर सेट करना oNetwork.SetDefaultPrinter "\\Server\Printer" " प्राप्त करना कनेक्टेड प्रिंटरों का संग्रह oPrinters = oNetwork.EnumPrinterConnections सेट करें अक्सर परिदृश्यों में ऐसे मामले होते हैं जब कंप्यूटर डिस्क पर कुछ बनाना, हटाना, स्थानांतरित करना या बदलना आवश्यक होता है। इस समस्या को FileSystemObject क्लास द्वारा हल किया जा सकता है, जिसे फ़ाइल सिस्टम के साथ काम करने के लिए डिज़ाइन किया गया है। निम्नलिखित वे वस्तुएं हैं जिन्हें यह वर्ग बना सकता है: FileSystemObject वर्ग (मुख्य वस्तु) की विधियाँ और गुण: बिल्डपाथ( FileSystemObject वर्ग के ड्राइव, फ़ोल्डर और फ़ाइलें ऑब्जेक्ट ड्राइव, फ़ोल्डर और फ़ाइलों के बारे में जानकारी संग्रहीत करते हैं और मुख्य रूप से फ़ाइल सिस्टम के बारे में जानकारी एकत्र करने के लिए उपयोग किए जाते हैं। उनके पास केवल दो संपत्तियां हैं: गिनती " संग्रह में आइटमों की संख्या लौटाती है; आइटम( इसे और अधिक स्पष्ट करने के लिए वस्तुओं का संग्रह क्या है, ड्राइव C के रूट पर फ़ाइलों की सूची प्रदर्शित करने के एक उदाहरण पर विचार करें: " वर्ग का एक ऑब्जेक्ट बनाना FileSystemObject सेट oFSO = CreateObject("Scripting.FileSystemObject") " एक फ़ोल्डर बनाना सेट ऑब्जेक्ट oFolder = oFSO.GetFolder("C:\") " फ़ाइलों का एक संग्रह प्राप्त करना सेट oFilesCollection = oFolder.Files " संग्रह में तत्वों की संख्या प्राप्त करना sResult = sResult & oFilesCollection.Count & "files in C:\" & vbCrLf " संग्रह से प्रत्येक फ़ाइल की विशेषताओं को पढ़ें oFilesCollection में प्रत्येक ओफ़ाइल के लिए sResult = sResult & oFile.Name & vbTab sResult = sResult & oFile.Size & vbCrLf अगला " परिणाम को MsgBox(sResult) स्क्रीन पर आउटपुट करें ड्राइव ऑब्जेक्ट स्थानीय या नेटवर्क ड्राइव के गुणों तक पहुंच प्रदान करता है: अवेलेबलस्पेस " उपयोगकर्ता के लिए उपलब्ध खाली डिस्क स्थान की मात्रा लौटाता है; DriveLetter " ड्राइव अक्षर लौटाता है; DriveType " ड्राइव प्रकार लौटाता है; FileSystem " ड्राइव का फ़ाइल सिस्टम प्रकार लौटाता है; फ्रीस्पेस "मुक्त डिस्क स्थान की मात्रा लौटाता है; IsReady" डिस्क की उपलब्धता लौटाता है; पथ "डिस्क का पथ लौटाता है; रूटफ़ोल्डर" डिस्क के रूट की ओर इंगित करने वाला एक फ़ोल्डर ऑब्जेक्ट बनाता है; सीरियलनंबर "डिस्क का सीरियल नंबर लौटाता है; ShareName" डिस्क का नेटवर्क नाम लौटाता है; टोटल साइज " डिस्क क्षमता को बाइट्स में लौटाता है; वॉल्यूमनाम " डिस्क लेबल लौटाता है या सेट करता है। फ़ोल्डर ऑब्जेक्ट किसी फ़ोल्डर के सभी गुणों तक पहुंच प्रदान करता है और आपको उस पर कार्य करने की अनुमति भी देता है: विशेषताएँ " फ़ोल्डर की विशेषताएँ लौटाती हैं; DateCreated " फ़ोल्डर की निर्माण तिथि लौटाता है; DateLastAccessed " वह दिनांक लौटाता है जब फ़ोल्डर अंतिम बार एक्सेस किया गया था; DateLastModified " वह दिनांक लौटाता है जब फ़ोल्डर संशोधित किया गया था; ड्राइव "फ़ोल्डर का ड्राइव अक्षर लौटाता है; फ़ाइलें" फ़ोल्डर में फ़ाइलों का संग्रह लौटाता है; IsRootFolder " यदि फ़ोल्डर डिस्क का रूट है तो True लौटाता है; Name " फ़ोल्डर का नाम लौटाता है; पेरेंटफ़ोल्डर "पैरेंट फ़ोल्डर" की ओर इशारा करते हुए एक फ़ोल्डर ऑब्जेक्ट बनाता है; पथ "फ़ोल्डर पथ लौटाता है; शॉर्टनेम" फ़ोल्डर नाम 8.3 प्रारूप में लौटाता है; शॉर्टपाथ " 8.3 प्रारूप में फ़ोल्डर का पथ लौटाता है; आकार " फ़ोल्डर का आकार लौटाता है; सबफोल्डर्स " सबफोल्डर्स का एक संग्रह लौटाता है; प्रकार " फ़ोल्डर का प्रकार लौटाता है; प्रतिलिपि( फ़ाइल ऑब्जेक्ट फ़ोल्डर ऑब्जेक्ट के समान है - यह फ़ाइल के सभी गुणों तक पहुंच प्रदान करता है, और आपको इस पर कार्रवाई करने की अनुमति भी देता है: विशेषताएँ " फ़ाइल की विशेषताएँ लौटाती हैं; DateCreated " फ़ाइल की निर्माण तिथि लौटाता है; DateLastAccessed " वह दिनांक लौटाता है जब फ़ाइल अंतिम बार एक्सेस की गई थी; DateLastModified " वह दिनांक लौटाता है जब फ़ाइल संशोधित की गई थी; ड्राइव " फ़ाइल का ड्राइव अक्षर लौटाता है; नाम " फ़ाइल का नाम लौटाता है; पेरेंटफ़ोल्डर "पैरेंट फ़ोल्डर" की ओर इशारा करते हुए एक फ़ोल्डर ऑब्जेक्ट बनाता है; पथ " फ़ाइल का पथ लौटाता है; शॉर्टनेम " फ़ाइल का नाम 8.3 प्रारूप में लौटाता है; शॉर्टपाथ "8.3 प्रारूप में फ़ाइल का पथ लौटाता है; आकार" फ़ाइल का आकार लौटाता है; प्रकार " फ़ाइल प्रकार लौटाता है; प्रतिलिपि( टेक्स्टस्ट्रीम ऑब्जेक्ट किसी फ़ाइल की सामग्री तक पहुँचने के लिए एक उपकरण है। आप इसका उपयोग किसी फ़ाइल को पढ़ने और संशोधित करने के लिए कर सकते हैं: AtEndOfLine "दिखाता है कि पंक्ति के अंत तक पहुँच गया है या नहीं; AtEndOfStream" दिखाता है कि क्या पंक्ति के अंत तक पहुँच गया है; कॉलम " उस कॉलम की संख्या लौटाता है जिसमें रीडिंग कर्सर स्थित है; लाइन " उस लाइन की संख्या लौटाता है जिसमें रीडिंग कर्सर स्थित है; बंद करें " फ़ाइल को बंद करता है - इसे अन्य प्रक्रियाओं के लिए मुक्त करता है; पढ़ें( हम FileSystemObject वर्ग की सभी विधियों और गुणों से परिचित हो गए, आइए इस वर्ग का उपयोग करने का एक उदाहरण देखें: " सिस्टम फ़ोल्डरों के लिए निरंतर कोड सेट करना कॉन्स्ट विंडोज़फ़ोल्डर = 0 कॉन्स्ट सिस्टमफ़ोल्डर = 1 कॉन्स्ट टेम्परेरीफ़ोल्डर = 2 " टेक्स्ट फ़ाइल तक पहुंच प्रकारों के लिए निरंतर कोड सेट करना कॉन्स्ट फ़ोररीडिंग = 1 कॉन्स्ट फ़ॉरराइटिंग = 2 कॉन्स्ट फ़ॉरएपेंडिंग = 8 " फ़ाइल सिस्टमऑब्जेक्ट क्लास का एक ऑब्जेक्ट बनाना सेट ओएफएसओ = क्रिएटऑब्जेक्ट ("स्क्रिप्टिंग.फाइलसिस्टमऑब्जेक्ट") "ड्राइव का एक संग्रह पुनर्प्राप्त करना ड्राइव्सकलेक्शन सेट करें = ओएफएसओ.ड्राइव्स" प्रत्येक ड्राइव को उसका लेबल या नेटवर्क नाम प्राप्त करने के लिए संसाधित करना ड्राइव्सकलेक्शन में प्रत्येक ओड्राइव के लिए sResult = sResult & oDrive.DriveLetter & ":" यदि oDrive.DriveType = रिमोट है तो sResult = sResult & oDrive.ShareName & vbCrLf अन्यथा यदि oDrive.IsReady है तो sResult = sResult & oDrive.VolumeName & vbCrLf अन्यथा sResult = sResult & vbCrLf यदि अगला है तो समाप्त करें " परिणाम प्रदर्शित करना Wscript.Echo(sResult) " ड्राइव ऑब्जेक्ट C बनाना: oDrive = oFSO.GetDrive("C") sResult = oDrive.DriveLetter & ": - " " ड्राइव टाइप C प्राप्त करना: केस oDrive.DriveType चुनें केस 0: sResult = sResult & "अज्ञात - " केस 1: sResult = sResult और "हटाने योग्य -" केस 2: sResult = sResult और "फिक्स्ड -" केस 3: sResult = sResult और "नेटवर्क -" केस 4: sResult = sResult और "CD-ROM -" केस 5: sResult = sResult और "RAM डिस्क - " अंतिम चयन " निर्धारित करें कि कोई डिस्क उपलब्ध है या नहीं और उसके गुण प्राप्त करें यदि oDrive.IsReady है तो sResult = sResult & "Ready" & vbCrLf sResult = sResult & "FileSystem is" & oDrive.FileSystem & vbCrLf sResult = sResult और "उपलब्ध स्थान:" और _ FormatNumber(oDrive.AvailableSpace/1024, 0) और "Kbytes" अन्यथा sResult = sResult और "तैयार नहीं" समाप्त होता है यदि " स्क्रीन पर परिणाम प्रदर्शित हो रहा है Wscript.Echo(sResult) " एक सेवा बनाना फ़ोल्डर ऑब्जेक्ट (विंडोज़ अस्थायी फ़ाइलें फ़ोल्डर) oTempFolder = oFSO. GetSpecialFolder(TemporaryFolder) सेट करें " एक टेक्स्ट फ़ाइल ऑब्जेक्ट बनाएं (और इसे C: ड्राइव के रूट में बनाएं) oFile = oFSO.CreateTextFile("C:\TestFile.txt) सेट करें ", सत्य) " एक टेक्स्ट फ़ाइल में लिखें oFile.WriteLine("यह एक परीक्षण है।") oFile.WriteLine(sResult) " एक टेक्स्ट फ़ाइल को बंद करता है और इसे अन्य प्रक्रियाओं के लिए मुक्त करता है oFile.Close " फ़ाइल की उपस्थिति की जाँच करता है विंडोज़ अस्थायी फ़ाइल फ़ोल्डर में, फ़ाइल को हटा देता है यदि oFSO.FileExists(oFSo.BuildPath(oTempFolder.Path, "TestFile.txt")) फिर _ oFSO.DeleteFile(oFSo.BuildPath(oTempFolder.Path, "TestFile.txt") ) " एक फ़ाइल ऑब्जेक्ट बनाएं सेट oFile = oFSO.GetFile("C:\TestFile.txt") " फ़ाइल को विंडोज़ अस्थायी फ़ाइल फ़ोल्डर oFile.Move(oFSo.BuildPath(oTempFolder.Path, "TestFile.txt") में ले जाएँ) "फ़ाइल की विशेषता बदलना यदि oFile.Attributes और 32 फिर oFile. विशेषताएँ = oFile.विशेषताएँ - 32 Wscript.Echo ("संग्रह बिट साफ़ हो गया है") अन्यथा oFile.Attributes = oFile.attributes + 32 Wscript.Echo ("संग्रह बिट सेट है") समाप्त यदि sResult = oFile.Path और vbCrLf और oFile .DateLastModified & ":" & vbCrLf " पढ़ने के लिए एक फ़ाइल खोलकर एक स्ट्रीम ऑब्जेक्ट बनाएं सेट oTestFile = oFSO.OpenTextFile(oFile.Path, ForReading, False) " एक स्ट्रीम को तब तक पढ़ें जब तक उसका अंत सामने न आ जाए oTestFile.AtEndOfStream करते समय करें<>सही sResult = sResult और oTestFile.ReadLine लूप " एक टेक्स्ट फ़ाइल को बंद करता है और इसे अन्य प्रक्रियाओं के लिए मुक्त करता है oTestFile.Close " स्क्रीन पर एक संदेश प्रिंट करता है Wscript.Echo(sResult) यह स्क्रिप्ट विंडोज़ अस्थायी निर्देशिकाओं और उपयोगकर्ता प्रोफ़ाइल में पुरानी फ़ाइलों के सिस्टम को साफ़ करने के लिए डिज़ाइन की गई है। इस उदाहरण में, आप देख सकते हैं कि उपरोक्त सभी निर्माण कैसे काम करते हैं: स्क्रिप्ट संरचना, नामकरण चर, सरणी और संग्रह के साथ काम करना, मैन्युअल त्रुटि प्रबंधन, सिस्टम चर पढ़ना, स्क्रिप्ट लॉग करने के लिए एक टेक्स्ट फ़ाइल बनाना, फ़ाइल सिस्टम के साथ काम करना , प्रक्रियाओं का उपयोग करना। "==== स्क्रिप्ट सूचना शीर्षलेख ====" स्क्रिप्ट का नाम: पर्ज टेम्प "संस्करण: 1.0" दिनांक: 07/16/08 "लेखक: बोचकेरेव विटाली" विवरण: स्क्रिप्ट कंप्यूटर से पुरानी अस्थायी फ़ाइलों को हटा देती है" == == स्क्रिप्ट मुख्य तर्क ==== "त्रुटि फिर से शुरू करने पर मैन्युअल त्रुटि प्रबंधन सक्षम करें" जब फ़ाइलों को पुराना माना जाता है तो समय अंतराल स्थिर होता है, कॉन्स्ट पर्जटाइम = 14 "दिन" अपवाद - उपयोगकर्ता प्रोफ़ाइल जिन्हें संसाधित नहीं किया जाना चाहिए मंद अपवाद(3) अपवाद( 0) = "डिफ़ॉल्ट उपयोगकर्ता" aExceptions(1) = "LocalService" aExceptions(2) = "NetworkService" aExceptions(3) = "सभी उपयोगकर्ता" " शेल और फ़ाइल सिस्टम ऑब्जेक्ट बनाना सेट oShell = CreateObject("wscript.shell") सेट ओएफएसओ = क्रिएटऑब्जेक्ट ("स्क्रिप्टिंग.फाइलसिस्टमऑब्जेक्ट") "सेवा फ़ोल्डर पथ परिभाषित करना sProgramFiles = oShell.ExpandEnvironmentStrings("%ProgramFiles%") sWinDir = oShell.ExpandEnvironmentStrings("%WinDir%") sWinTempFolder = sWinDir & "\Temp" sDocuments = "C:\ दस्तावेज़ और सेटिंग्स" " एक स्क्रिप्ट लॉग फ़ाइल बनाना sLogFileName = sWinTempFolder & "\PurgeTemp_" & Date sLogFileName = Replace(sLogFileName, ".", "_") sLogFileName = Replace(sLogFileName, "/", "_ ") oLogFile = oFSO.CreateTextFile(sLogFileName & ".log",true) oLogFile.WriteLine सेट करें "========== शुद्ध करना प्रारंभ करें ========== " विंडोज़ की सफाई अस्थायी फ़ोल्डर oLogFile.WriteLine vbCrLf और "========== Windows अस्थायी फ़ोल्डर ========== PurgeFolder(sWinTempFolder)" उपयोगकर्ता प्रोफ़ाइल और इंटरनेट फ़ाइलों के अस्थायी फ़ोल्डर को साफ़ करना oLogFile। WriteLine vbCrLf और _ "===== ===== उपयोगकर्ता अस्थायी फ़ोल्डर और उपयोगकर्ता अस्थायी इंटरनेट फ़ाइलें ========== " oDocuments सेट करें = oFSO.GetFolder(sDocuments) colProfiles = oDocuments.SubFolders सेट करें colProfiles में प्रत्येक oProfile bFlag = false aExceptions में प्रत्येक sException के लिए यदि InStr(oProfile.Path,sException) > 0 तो bFlag = अंत के लिए सही निकास यदि अगला यदि bFlag = गलत है तो PurgeFolder(oProfile.Path & "\Local Settings\Temp" ) PurgeFolder(oProfile.Path & "\Local Setting\Temporary Internet Files") यदि अगला है तो समाप्त करें " NOD32 क्वारंटाइन oLogFile.WriteLine vbCrLf एवं "========== NOD32 क्वारंटाइन ======== को साफ़ करना === sQuarantine = sProgramFiles & "\Eset \Infected" PurgeFolder(sQuarantine) " लॉग फ़ाइल को बंद करना oLogFile.WriteLine vbCrLf & "=========== पर्ज रोकें ========== " oLogFile.Close " PurgeFolder प्रक्रिया - पुरानी फ़ाइलों को हटाना Sub PurgeFolder(sFolderPath) " एक फ़ोल्डर सेट ऑब्जेक्ट बनाना oFolder = oFSO.GetFolder(sFolderPath) " फ़ाइलों का एक संग्रह पुनर्प्राप्त करना colFiles = oFolder सेट करें। फ़ाइलें " संग्रह में प्रत्येक फ़ाइल को संसाधित करें colFiles में प्रत्येक ओफ़ाइल के लिए " जांचें कि क्या फ़ाइल पुरानी है यदि (Date-oFile.DateLastModified) > PurgeTime और (Date-oFile.DateCreated) > _ PurgeTime फिर " को एक संदेश लिखें स्क्रिप्ट लॉग oLogFile.Writeline oFile.Path & vbTab & oFile.DateCreated " एक अप्रचलित फ़ाइल oFSO.DeleteFile oFile.Path को हटाना, सही है" यदि त्रुटि है तो त्रुटियों की जाँच करना।<>0 फिर " स्क्रिप्ट लॉग oLogFile.Writeline पर एक त्रुटि संदेश लिखें "-----> त्रुटि # " और CStr(Err.Number) _ और " " और त्रुटि विवरण " त्रुटि साफ़ करें त्रुटि साफ़ करें अंत यदि " रोकें 20 मिलीसेकंड WScript.Sleep 20 समाप्त यदि अगला " सबफ़ोल्डर्स का एक संग्रह प्राप्त करना colSubFolders = oFolder.SubFolders सेट करें " colSubFolders में प्रत्येक oSubFolder के लिए प्रत्येक सबफ़ोल्डर को संसाधित करना " पुरानी फ़ाइलों को हटाने की प्रक्रिया को पुनरावर्ती रूप से कॉल करना - सबरूटीन स्वयं कॉल करता है PurgeFolder(oSubFolder.Path ) "फ़ोल्डर का आकार जांच रहा है यदि oSubFolder.Size = 0 है तो" स्क्रिप्ट लॉग oLogFile.Writeline oSubFolder.Path & vbTab & oSubFolder.DateCreated पर एक संदेश लिखें " एक खाली फ़ोल्डर oFSO.DeleteFolder oSubFolder.Path हटाएं" त्रुटियों की जांच करें यदि गलती हो ।संख्या<>0 फिर " स्क्रिप्ट लॉग oLogFile.Writeline पर एक त्रुटि संदेश लिखें "-----> त्रुटि # " & CStr(Err.Number) _ & " " & Err.Description " त्रुटि साफ़ करें त्रुटि मिटाएँ। यदि समाप्त हो तो साफ़ करें यदि समाप्त करें अगला अंत उप अब तक हमने विज़ुअल बेसिक स्क्रिप्ट की मूल बातें सीख ली हैं। आइए ऐसे परिदृश्यों के फायदे और नुकसान को संक्षेप में बताएं और निर्धारित करें: विटाली बोचकेरेव बाहरी लिंक का अनुभाग, अर्थात्, अन्य साइटों के लिंक जिनसे इस संसाधन का कोई संबंध नहीं है, साइट स्वामी इन संसाधनों और उनकी सामग्री की उपलब्धता के लिए कोई ज़िम्मेदारी नहीं लेता है। किसी तरह मैं पूरी तरह से आगे भाग गया और आपको दो के बारे में नहीं बताया डायलॉग बॉक्स फ़ंक्शन: MsgBox और InputBox. इस बहुत ही संक्षिप्त पाठ में मैं आपको इन दो कार्यों के लिए सभी गैजेट के बारे में बताऊंगा। डायलॉग बॉक्स बनाने के अन्य तरीके भी हैं, लेकिन इसके लिए इसकी आवश्यकता होगी डब्ल्यूएसएच वस्तुएं, जिसकी चर्चा निम्नलिखित पाठों में की जाएगी। संदेश प्रदर्शित करने का सबसे सामान्य कार्य। निःसंदेह यह उससे कहीं अधिक जटिल है एक WScript ऑब्जेक्ट को प्रतिध्वनित करें, लेकिन उसे वस्तु की भी आवश्यकता नहीं है। पैरामीटर बटनएक साथ कई मान ग्रहण कर सकता है। उन्हें इंगित करने के लिए, "+" चिह्न का उपयोग करें या बस मानों के योग का उपयोग करें। इस पैरामीटर के मान नीचे दिए गए हैं। यह ध्यान देने योग्य है कि पैरामीटर बटनएक ही श्रेणी से अनेक मान स्वीकार नहीं कर सकते. ये मान बस जुड़ जाएंगे। यानी आप एक ही समय में बटन या आइकन के कई सेट इंस्टॉल नहीं कर पाएंगे। "वीबीस्क्रिप्ट पाठ संख्या 16: "फ़ंक्शन संदेशबॉक्स और इनपुटबॉक्स" फ़ाइल_1.vbs"********************************* * ********************** संदेश बॉक्स "हैलो", 5+16, "शीर्षक" संदेशबॉक्स "हैलो", vbRetryCancel+16, "शीर्षक" संदेश बॉक्स "हैलो " , vbRetryCancel+524288, "शीर्षक" संदेशबॉक्स "हैलो", vbAbortRetryIgnore + vbInformation + vbDefaultButton2 + vbSystemModal + 524288, "शीर्षक" संदेशबॉक्स "हैलो", 528706, "शीर्षक" "********************************************************
"वीबीस्क्रिप्ट पाठ #16: "MsgBox और InputBox फ़ंक्शन "file_1.vbs "********************************************************
संदेश बॉक्स "हैलो", 5 + 16, "शीर्षक" संदेश बॉक्स "हैलो" , vbRetryCancel + 16 , "शीर्षक" संदेश बॉक्स "हैलो", vbRetryCancel + 524288, "शीर्षक" संदेश बॉक्स "हैलो", vbAbortRetryIgnore + vbInformation + vbDefaultButton2 + vbSystemModal + 524288, "शीर्षक" संदेश बॉक्स "हैलो", 528706, "शीर्षक" इसके अलावा, MsgBox फ़ंक्शन बटन क्लिक का परिणाम लौटा सकता है। इसे एक वेरिएबल को सौंपा जा सकता है और इस तरह दबाए गए बटन को निर्धारित किया जा सकता है। "********************************************* ******* "वीबीस्क्रिप्ट पाठ संख्या 16: "संदेशबॉक्स और इनपुटबॉक्स फ़ंक्शन "फ़ाइल_2.वीबीएस"************************** *********** *************************** डिम नोपका नोपका = संदेश बॉक्स("कोई भी बटन दबाएँ ",2,"शीर्षक") यदि नोपका = 3 तो संदेशबॉक्स "आपने बटन दबाया - निरस्त करें" अन्यथा यदि बटन = 4 तो संदेशबॉक्स "आपने बटन दबाया - दोहराएँ" अन्यथा संदेशबॉक्स "आपने बटन दबाया - छोड़ें" समाप्त यदि "********************************************* ******* "वीबीस्क्रिप्ट पाठ संख्या 16: "संदेशबॉक्स और इनपुटबॉक्स फ़ंक्शन "फ़ाइल_4.vbs"************************** *********** *************************** डिम डिक्ट, अबाउटबॉम्ब सेट डिक्ट = क्रिएटऑब्जेक्ट(" स्क्रिप्टिंग.शब्दकोश") Dict.CompareMode = 1 Dict .जोड़ें "पीला", "बम फट गया है!" Dict.जोड़ें "लाल", "आपने बम को निष्क्रिय कर दिया है!" Dict.जोड़ें "नीला", "बम फट गया है!" फट गया!" Dict.जोड़ें "हरा", "बम फट गया है!" AboutBomb = InputBox("बम का पता चला!!! आपको कौन सा तार काटना चाहिए: पीला, लाल, नीला या हरा??","बम का पता चला!!! ","यहां तार का रंग दर्ज करें...") यदि Dict.Exists(बम के बारे में) तो MsgBox Dict.Item(बम के बारे में) अन्यथा MsgBox "आपकी दृष्टि खराब है! ऐसा कोई तार नहीं है! बम फट गया!!!" समाप्त यदि "********************************************************
WScript रूट क्लास की विधियाँ और गुण
शैल वर्ग की विधियाँ और गुण
नेटवर्क वर्ग के तरीके और गुण
FileSystemObject वर्ग की विधियाँ और गुण
परिदृश्य "पुरानी फ़ाइलें हटाना"
बाहरी संबंध
संदेशबॉक्स फ़ंक्शन
वाक्य - विन्यास: संदेशबॉक्स (संकेत[, बटन][, शीर्षक][, हेल्पफ़ाइल, संदर्भ])संवाद बक्सों के लिए स्थिरांक (प्रदर्शन बटन):
संवाद बक्सों के लिए स्थिरांक (प्रदर्शित चिह्न):
संवाद बॉक्स के लिए स्थिरांक (डिफ़ॉल्ट बटन):
डायलॉग बॉक्स के लिए स्थिरांक (विंडो मोड):
अन्य:
दबाए गए बटनों का वापसी परिणाम (स्थिरांक):