يستخدم VBScript نوع بيانات واحد ، متغير ، والذي يسمح لك بتخزين رقم وسلسلة وتاريخ وقيمة منطقية ومرجع كائن ومعلومات أخرى في متغير. يمكنك تحديد نوع محتوى متغير باستخدام مجموعة من الوظائف: VarType ، TypeName ، IsArray ، IsDate ، IsEmpty ، IsNull ، IsNumeric ، IsObject ، والتي سيتم مناقشتها أدناه. يُطلق على نوع المعلومات التي تحتويها أيضًا نوعًا فرعيًا متغيرًا. القائمة الكاملةالأنواع الفرعية موضحة في الجدول التالي:
النوع الفرعي | وصف |
---|---|
فارغة | لم يتم تعيين قيمة للمتغير. عند استخدام متغير غير مهيأ في التعبيرات الرقمية ، سيتم استبدال 0 ، وفي السلاسل - سلسلة فارغة. |
باطل | المتغير لا يحتوي على بيانات. |
قيمة منطقية | يمكن أن تكون قيمة Boolean صحيحة أو خطأ. |
بايت | عدد صحيح في النطاق من 0 إلى 255. |
عدد صحيح | عدد صحيح في النطاق -32768 إلى 32767. |
عملة | رقم ذو نقطة ثابتة في النطاق -922337203685477.5808 إلى 922337203685477.5807. |
طويل | عدد صحيح في النطاق -2 147483648 إلى 2147483647. |
غير مرتبطة | رقم النقطة العائمة بدقة واحدة. للقيم السالبة ، النطاق الصالح هو من -3.402823E38 إلى -1.401298E-45. للإيجابية - من 1.401298E-45 إلى 3.402823E38. |
مزدوج | رقم النقطة العائمة مزدوج الدقة. للقيم السالبة ، النطاق المقبول هو 79769313486232E308 إلى -4.94065645841247E-324. للإيجابية - من 4.94065645841247E-324 إلى 1.79769313486232E308. |
التاريخ (الوقت) | يحتوي على رقم يمثل تاريخًا في النطاق من 1 يناير ، 100 ، إلى 31 ديسمبر ، 9999. |
سلسلة | سلسلة من الشخصيات. يبلغ الحد الأقصى للطول 2 مليار حرف. |
موضوع | شيء. |
خطأ | رقم خاطئ. |
اعتمادًا على التعبير الذي يشارك فيه المتغير ، سيتم تحويل محتوياته تلقائيًا إلى النوع المطلوب. ضع في اعتبارك هذا المثال:
الاختبار الفرعي الصريح للخيار VBScript Dim A، B A = 5 B = "12" Application.MessageBox A + B، ""، vbOkOnly End Sub
منذ متغير رقمي متضمن في التعبير أيقوم المترجم بتحويل قيمة المتغير بمن السلسلة "12" في العدد ولخصها:
دعونا نغير الماكرو بحيث المتغير أيحتوي أيضًا على الخط:
الخيار الصريح Sub TestVBScript Dim A، B A = "5" B = "12" Application.MessageBox A + B، ""، vbOkOnly End Sub
دعونا نديرها للتنفيذ. ستعرض الشاشة الآن نتيجة الدمج (التسلسل) بين سلسلتين ، وليس مجموع تمثيلاتهما الرقمية:
لتجنب الالتباس مع التحويل التلقائي للنوع ، يوصى باستخدام وظائف التحويل: CBool و CByte و CCur و CDate و CDbl و CInt و CLng و CSng و CStr.
إذا كانت نتيجة التعبير هي بالضبط تسلسل السلاسل ، وليس مجموع تمثيلاتها الرقمية ، فيجب استخدام عامل التشغيل & بدلاً من +.
المتغير هو تمثيل رمزي مفيد لمنطقة من الذاكرة حيث يقوم التطبيق بتخزين بعض البيانات. أثناء تنفيذ التطبيق ، يمكن أن تتغير قيمة المتغير. يجب التصريح عن المتغير بعبارة Dim قبل الاستخدام.
باستخدام عامل واحد ، يمكنك التصريح عن عدة متغيرات في وقت واحد إذا قمت بإدراج أسمائها مفصولة بفواصل:
خافت يسار ، يمين ، أعلى ، أسفل
عند التصريح ، ليست هناك حاجة لتحديد نوع البيانات ، لأن جميع المتغيرات من النوع المتغير.
إذا لم يتم تحديد Option Explicit في السطر الأول من نص البرنامج النصي ، فيمكن استخدام المتغيرات بدون تصريح. لكن هذا المسار يمكن أن يؤدي إلى أخطاء يصعب اكتشافها. يكفي ارتكاب خطأ مرة واحدة في تهجئة اسم المتغير في نص البرنامج للحصول على نتيجة غير متوقعة. نوصي دائمًا بتحديد الخيار صريح والإعلان عن المتغيرات.
يجب أن يستوفي اسم المتغير المتطلبات التالية:
يتم تحديد نطاق المتغير من خلال المكان الذي تم الإعلان عنه فيه. إذا كان داخل جسم الإجراء ، فإن هذا المتغير يسمى محليًا ولا يتوفر إلا في هذا الإجراء. إذا تم الإعلان عن متغير في نص البرنامج النصي ، فسيكون مرئيًا لجميع الإجراءات أو الوظائف المحددة في هذا البرنامج النصي. يمكن أن يكون للمتغيرات المحلية نفس الاسم إذا تم التصريح عنها في إجراءات مختلفة.
في شجرة المستكشف في نافذة محرر كائنات البرنامج النصي ، يوجد قسم خاص - الثوابت والمتغيرات - للإعلان عن المتغيرات العامة المرئية لجميع وظائف البرنامج النصي للمشروع.
يخصص المترجم ذاكرة للمتغيرات المحلية في وقت الإعلان عنها ويحررها عند الخروج من الإجراء. توجد المتغيرات العامة من لحظة الإعلان عنها وحتى انتهاء البرنامج النصي من تنفيذه. فيما يتعلق بـ Gedymin ، هذا يعني أن المتغيرات العالمية موجودة طوال فترة تنفيذ البرنامج بالكامل.
يتم تعيين قيمة المتغير المصرح به باستخدام عامل التشغيل =. يشار إلى اسم المتغير على يسار العامل ، والقيمة الجديدة يشار إليها على اليمين. على سبيل المثال:
أ = 200 ب = "الاسم"
يسمى المتغير الذي يحتوي على قيمة واحدة الحجمي. في بعض الأحيان ، يصبح من الضروري تخزين عدة قيم في متغير واحد. في هذه الحالة ، يجب التصريح عن مصفوفة. صيغة الإعلان مطابقة لإعلان المتغير الحجمي ، باستثناء أنه بعد الاسم بين قوسين ، نحدد أبعاد المصفوفة. سيُنشئ الإعلان التالي مصفوفة من 12 عنصرًا:
شهور خافتة (11)
في VBScript ، يكون الحد الأيسر لفهرس الصفيف دائمًا 0. وبالتالي ، يتم حساب حجم الصفيف على أنه الرقم الموجود بين قوسين زائد واحد. عند تعيين قيمة لعنصر مصفوفة ، يجب تحديد فهرسها بين قوسين:
الشهور (0) = "يناير" الشهور (1) = "فبراير" الشهور (2) = "مارس" ... الشهور (10) = "نوفمبر" الشهور (11) = "ديسمبر"
وبالمثل ، عند الإشارة إلى قيمة عنصر ما ، فإننا نستخدم فهرسه:
اسم الشهر = عدد الأشهر (5)
لا يجب أن تكون المصفوفة أحادية البعد. يسمح لنا VBScript بتحديد ما يصل إلى 60 بُعدًا عند التصريح عن مصفوفة. على سبيل المثال ، ستُنشئ العبارة التالية مصفوفة ثنائية الأبعاد تتكون من 12 صفًا وعمودين:
خفت الشهر: الأيام (11 ، 1)
عند الوصول إلى عناصر مصفوفة متعددة الأبعاد ، يجب تحديد جميع المؤشرات:
MonthDays (0، 0) = "يناير" MonthDays (0، 1) = 31 شهرًا (1، 0) = "فبراير" شهر أيام (1، 1) = 28 ...
أعلنا أعلاه عن المصفوفات التي لا يتغير حجمها أثناء تشغيل البرنامج. إذا كنت لا تعرف مسبقًا عدد العناصر المطلوبة ، فيمكنك إعلان مصفوفة ديناميكية:
قبل الاستخدام ، يجب عليك تعيين حجم المصفوفة الديناميكية باستخدام عامل التشغيل ReDim:
ReDim A (25)
أثناء التنفيذ ، يمكنك استدعاء جملة ReDim عدة مرات ، في كل مرة تغير حجم المصفوفة. يحافظ خيار الاحتفاظ على قيم عناصر الصفيف عند تغيير حجمها. على سبيل المثال ، ستعمل الكود التالي على زيادة المصفوفة أعلاه بمقدار خمسة عناصر ، مع ترك العناصر الموجودة كما هي:
ReDim Preserve A (30)
تذكر أنه عندما تقوم بتقليل حجم المصفوفة ، ستفقد قيم العناصر المحذوفة بلا رجعة. باستخدام عبارة Erase ، يمكنك مسح عناصر مصفوفة ثابتة أو تحرير الذاكرة التي تشغلها مصفوفة ديناميكية.
Dim A ReDim A (25) ... محو أ
من الممارسات الجيدة التصريح عن ثوابت القيم المعاد استخدامها في نص البرنامج. يعمل الاسم الثابت المخصص جيدًا على تحسين قابلية القراءة ، كما أن استخدامه ذاته يبسط عملية إجراء التغييرات على الكود. على عكس المتغيرات ، لا يمكن تغيير قيمة الثابت أثناء تنفيذ البرنامج. يتم إنشاء الثوابت باستخدام عامل Const:
Const CountryName = "بيلاروسيا" Const CountryCode = 375
يمكن التصريح عن عدة ثوابت داخل عامل واحد ، مفصولة بفواصل. مثل المتغير ، الثابت له نطاقه الخاص بناءً على مكان (داخل أو خارج الإجراء) وكيف تم الإعلان عنه (عام أو خاص). الثوابت التي تم إنشاؤها بواسطة عامل Const بدون تحديد عام أو خاص تكون عامة بشكل افتراضي.
في شجرة المستكشف في نافذة محرر كائنات البرنامج النصي ، يوجد قسم خاص - الثوابت والمتغيرات - لإعلان الثوابت العامة مرئية لجميع وظائف البرنامج النصي للمشروع.
يتم وضع القيم الثابتة للسلسلة بين علامتي اقتباس مزدوجتين.
يجب أن تكون قيم نوع التاريخ محاطة بعلامات الجنيه (#) واستخدام تنسيق الشهر / اليوم / السنة في الولايات المتحدة. على سبيل المثال:
يوم الاستقلال العام Const = # 03/25/1918 #
لتجنب الخلط بين الثوابت والمتغيرات ، يوصى باستخدام بادئة واحدة لجميع الثوابت ، على سبيل المثال "con" ، أو كتابة اسم ثابت بأحرف كبيرة.
لتسهيل عمل المبرمج ، يحتوي VBScript على مجموعة من الثوابت المحددة مسبقًا.
تنقسم عوامل تشغيل VBScript إلى خمس فئات: الحساب والمقارنة والدمج والمنطقية والتعيين.
المشغل أو العامل | مثال على الاستخدام | وصف |
---|---|---|
^ | عدد ^ الأس | رفع الرقم إلى الأس. يمكن أن يكون الرقم أقل من الصفر فقط في حالة وجود درجة صحيحة. إذا كان أحد المعاملات هو Null ، فسيتم تقييم التعبير بأكمله إلى Null. إذا تم تنفيذ عدة أسية متتالية ، يتم حساب النتيجة من اليسار إلى اليمين. |
* | number1 * number2 | حاصل ضرب عددين. إذا كان المعامل فارغًا ، فيُفترض أنه صفر. إذا كان أحد المعاملات على الأقل هو Null ، فسيتم تقييم التعبير بأكمله إلى Null. |
/ | number1 / number2 | القسمة الحقيقية لرقمين. بالنسبة للمعاملات ، فإن القواعد تشبه عامل الضرب. |
\ | number1 \ number2 | تقسيم صحيح. يتم تحويل كلا المعاملين إلى نوع Byte أو Integer أو Long قبل أن يتم تقييمها. خلاف ذلك ، تنطبق نفس القواعد المطبقة على عامل القسمة. |
عصري | number1 Mod number2 | ما تبقى من قسمة عدد صحيح. صب المعاملات إلى عدد صحيح ، وكذلك قواعد التعامل مع فارغ و Null ، كما هو الحال في القسمة الصحيحة. |
+ | التعبير 1 + التعبير 2 | إذا كان كلا المعاملين أرقامًا ، تكون النتيجة مجموعهما الحسابي. إذا كان كلا المعاملين عبارة عن سلاسل - تسلسل (تسلسل) من سلسلتين. إذا كان أحد المعاملين عبارة عن رقم والآخر عبارة عن سلسلة ، فسيتم تحويل معامل السلسلة إلى رقم وإضافته إلى المعامل الرقمي. إذا كان أحد المعاملات على الأقل هو Null ، فسيتم تقييم التعبير بأكمله إلى Null. إذا كان كلا المعاملين فارغين ، فإن النتيجة هي قيمة عدد صحيح من 0. إذا كان عامل واحد فقط فارغ ، يتم إرجاع قيمة المعامل الثاني كنتيجة. |
- | number1 - number2 أو - رقم | في الحالة الأولى ، تُرجع الفرق بين رقمين. في الثانية ، فإنه يعكس علامة الرقم. قواعد معاملات Null و Empty هي نفسها لقواعد عامل الضرب. |
تنسيق عامل المقارنة:
النتيجة = التعبير 1 مقارنة التعبير 2
حيث يتم استخدام عوامل المقارنة التالية:< (меньше), <= (меньше или равно), >(أكبر من) ،> = (أكبر أو يساوي) ، = (يساوي) ،<>(غير متساوي).
اعتمادًا على أنواع وقيم المعاملات ، يتم إجراء المقارنة على النحو التالي:
لو | الذي - التي |
---|---|
كلا المعاملين عبارة عن أرقام. | يقارن رقمين. |
كلا المعاملين عبارة عن سلسلة. | يتم إجراء مقارنة بين سلسلتين. |
أحد المعاملين عبارة عن رقم والثاني عبارة عن سلسلة. | يتم تحويل معامل السلسلة إلى رقم ويتم إجراء مقارنة بين الرقمين. |
أحد المعاملين فارغ والآخر عبارة عن رقم. | يُفترض أن يكون المعامل الذي يحتوي على قيمة فارغة هو 0. |
أحد المعاملين فارغ ، والثاني عبارة عن سلسلة. | من المفترض أن يكون المعامل ذو القيمة فارغ هو السلسلة الفارغة "". يتم إجراء مقارنة بين سلسلتين. |
كلا المعاملين فارغين. | تعتبر المعاملات متساوية. |
واحد على الأقل من المعاملات هو Null. | كانت النتيجة لاغية. |
يتم استخدام عامل التشغيل الخاص لمقارنة متغيرين للكائنين وإرجاع True إذا كان كلا المتغيرين يشيران إلى نفس مثيل الكائن.
النتيجة = تعبير 1 & تعبير 2
إذا لم يكن المعامل سلسلة ، يتم تحويله إلى نوع سلسلة. إذا كان كلا المعاملين Null ، فإن النتيجة أيضًا هي Null ، ولكن على عكس العوامل الأخرى ، إذا كان معامل واحد فقط هو Null ، فمن المفترض أن يكون سلسلة فارغة. يتم أيضًا معاملة المعامل بالقيمة فارغة كسلسلة فارغة "".
يوفر لنا VBScript العوامل المنطقية التالية:
يمكن استخدام التعبيرات المنطقية أو القيم الرقمية كمعامِلات للعوامل المنطقية. في الحالة الأولى ، ستكون النتيجة ثابتًا منطقيًا ، في الحالة الثانية - رقم. اعتمادًا على عامل التشغيل ، يمكن أن يؤدي تغذية قيمة فارغة واحدة أو قيمتين إلى الإدخال إلى نتيجة خالية. عامل التشغيل Not أحادي ويعيد النفي المنطقي للتعبير. لا ينفذ عامل التشغيل انعكاس أحادي المعامل على معامل رقمي. باقي العوامل المنطقية ثنائية. يوضح الجدول أدناه نتائج تنفيذ كل من المشغلين اعتمادًا على قيمة المعاملين Exp1 و Exp2:
إكسب 1 | إكسب 2 | و | أو | Xor | مكافئ | عفريت |
---|---|---|---|---|---|---|
حقيقي | حقيقي | حقيقي | حقيقي | خاطئة | حقيقي | حقيقي |
حقيقي | خاطئة | خاطئة | حقيقي | حقيقي | خاطئة | خاطئة |
خاطئة | حقيقي | خاطئة | حقيقي | حقيقي | خاطئة | حقيقي |
خاطئة | خاطئة | خاطئة | خاطئة | خاطئة | حقيقي | حقيقي |
حقيقي | باطل | باطل | حقيقي | باطل | باطل | باطل |
خاطئة | باطل | خاطئة | باطل | باطل | باطل | حقيقي |
باطل | حقيقي | باطل | حقيقي | باطل | باطل | حقيقي |
باطل | خاطئة | خاطئة | باطل | باطل | باطل | باطل |
باطل | باطل | باطل | باطل | باطل | باطل | باطل |
في الحياة ، غالبًا ما يتم استخدام عوامل التشغيل And و Or ، وفي كثير من الأحيان أقل - Xor. لم نضطر للتعامل مع الاستخدام العملي لمشغلي Eqv و Imp. إذا كان من الصعب عليك التعامل مع الجدول أعلاه ، فإننا نلخص تأثير هذه العوامل:
عند تنفيذ أحادي المعامل على المعاملات الرقمية ، يتم تحديد نتيجة العامل المنطقي من الجدول التالي:
إكسب 1 | إكسب 2 | و | أو | Xor | مكافئ | عفريت |
---|---|---|---|---|---|---|
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 |
تم وصف عامل التعيين (=) بالتفصيل في قسم "المتغيرات".
إذا احتوى التعبير على عدة عوامل تشغيل ، فسيتم تطبيقها بترتيب يسمى أسبقية عامل التشغيل. يمكنك تغيير الترتيب الافتراضي باستخدام الأقواس. يتم دائمًا تقييم التعبير الموجود بين الأقواس أولاً.
في التعبير الذي يحتوي على عوامل تشغيل من فئات مختلفة ، يتم إجراء العمليات الحسابية أولاً ، ثم عوامل المقارنة ، وأخيرًا العوامل المنطقية. جميع عوامل المقارنة لها نفس الأسبقية ويتم تقييمها من اليسار إلى اليمين. يتم تقييم العمليات الحسابية والمنطقية بالترتيب التالي:
إذا حدث الضرب والقسمة بنفس التعبير ، فسيتم تنفيذ العمليات بترتيب من اليسار إلى اليمين. تنطبق قاعدة مماثلة في حالة التواجد المتزامن لعمليات الجمع والطرح.
عامل تشغيل سلسلة السلسلة (&) ليس حسابيًا ويتم منحه الأولوية بين العمليات الحسابية وعوامل المقارنة.
تسلسل العمليات المنطقية كما يلي:
تستخدم التعبيرات الشرطية للتحكم في ترتيب تنفيذ أوامر البرنامج وتسمح لك بتنظيم الانتقالات (الفروع) وتكرار الأوامر. عادةً ما يتم استخدام عوامل المقارنة بالاقتران مع التعبيرات الشرطية.
تعبير الفرع الشرطي إذا كان يسمح لك بتنفيذ مجموعة أو أخرى من الأوامر بناءً على النتيجة تعبير منطقيأو قيمة المتغير المنطقي.
لتنفيذ أمر واحد عند استيفاء شرط معين ، يتم استخدام صيغة التعبير المكون من سطر واحد:
Dim S If DatePart ("w"، Now) = vbMonday ثم S = "Monday" Application.MessageBox S، ""، vbOkOnly
لاحظ أنه تم حذف قسم Else في هذه الحالة. لتنفيذ مجموعة من العبارات ، قم بتضمينها بين الكلمتين الأساسيتين بعد ذلك و End If.
Dim S If DatePart ("w"، Now) = vbMonday ثم S = "اليوم هو الإثنين" Application.MessageBox S، ""، vbOkOnly End If
إذا ، عند استيفاء الشرط ، يلزم تنفيذ رمز واحد ، وإذا لم يتم استيفاء الشرط ، فإن آخر ، يتم استخدام صيغة التعبير مع قسم Else:
Dim S If DatePart ("w"، Now) = vbMonday ثم S = "اليوم هو الإثنين" Else S = "اليوم ليس يوم الإثنين" End If Application.MessageBox S، ""، vbOkOnly
إذا كنت بحاجة للاختيار من بين عدة بدائل ، فإن بناء الجملة باستخدام ElseIf سيكون مناسبًا:
Dim S، DD = DatePart ("w"، Now) إذا كان D = vbMonday ثم S = "الاثنين" ElseIf D = vbTuesday ثم S = "الثلاثاء" ElseIf D = vbWednesday ثم S = "الأربعاء" ... إنهاء إذا كان التطبيق. MessageBox S ، "" ، vbOkOkOnly
إذا كان من الممكن دمج عبارات:
Dim S، DD = DatePart ("w"، Now) إذا كان D = vbMonday ثم S = "Monday" Else If D = vbTuesday ثم S = "الثلاثاء" وإلا إذا D = vbWednesday ثم S = "الأربعاء" آخر ... النهاية إذا انتهى إذا انتهى إذا
على الرغم من أن عدد أقسام ElseIf في التعبير الشرطي غير محدود ، إلا أن استخدامها المكثف يمكن أن يؤدي إلى تعليمات برمجية مربكة وغير قابلة للقراءة. في حالة اختيار بديل واحد من بين مجموعة متنوعة من البدائل الممكنة ، اعتمادًا على قيمة بعض المحددات ، يوصى باستخدام تعبير Select Case.
دعنا نعيد كتابة مثال يوم من الأسبوع باستخدام تعبير التحديد:
Dim S حدد حالة DatePart ("w"، Now) Case vbMonday S = "Monday" Case vbTuesday S = "Tuesday" Case vbWednesday S = "Wednesday" ... Case Else Err.Raise 32000، ""، "يوم غير معروف من الأسبوع "End Select
نظرًا لأنه يتم تقييم تعبير المحدد مرة واحدة فقط ، فإن استخدام Select..Case ينتج عنه رمز أكثر كفاءة. يوصى دائمًا باستخدام قسم "الحالة الأخرى" للقبض على قيم المحدد غير الصالحة أو غير المعالجة.
في كثير من الأحيان ، ينشأ موقف عندما يحتاج الرمز إلى إعادة التشغيل. للقيام بذلك ، اكتب عبارة حلقة تكرر أوامر معينة مرارًا وتكرارًا. تُستخدم العبارات التكرارية في العديد من المواقف: عند حساب الإجمالي على قائمة الأرقام ، أو التنقل خلال السجلات في مجموعة البيانات ، أو لتشغيل كتلة من التعليمات البرمجية لكائنات متعددة. يوجد العديد من الحلقات الموضحة في الأقسام التالية. تحقق بعضها بينما الشرط صحيح والبعض الآخر خطأ. وأخيرًا ، هناك تلك التي يتم تنفيذها عددًا معينًا من المرات.
يهدف عامل التشغيل هذا إلى تنفيذ مجموعة من الأوامر حتى يصبح شرط معين صحيحًا أو حتى يصبح صحيحًا. يمكن التحقق من الحالة كما في بداية الدورة:
قم بإجراء [(أثناء | حتى) الشرط] التكرار
وفي نهاية:
Do Loop [(while | until) condition]
يمكن أن يظهر الأمر Exit Do عددًا غير محدود من المرات في جسم الحلقة. يتم استخدامه عادةً مع If .. ثم التعبير الشرطي ويسمح لك بنقل التحكم إلى العبارة التي تلي الحلقة مباشرة. عند استخدام Exit Do داخل حلقة متداخلة ، سيتدفق التحكم إلى الحلقة الخارجية.
الكود التالي يحل محل النرد:
Dim Resp، Num Do Num = Int (6 * Rnd + 1) Resp = Application.MessageBox (Num & "another number؟"، ""، _ VbYesNo or vbQuestion) Loop حتى Resp = vbNo
إنها نسخة مبتورة من عامل التشغيل Do ..Loop ويسمح لك بتنفيذ مجموعة من الأوامر عندما يكون الشرط صحيحًا. صيغة المشغل:
بينما الشرط وند
لاحظ أن Exit Do ليس له أي تأثير داخل هذه الحلقة. بينما .. يمكن أن تكون حلقات الويند متداخلة.
تكرر هذه الحلقة مجموعة محددة من الأوامر لعدد محدد من المرات. صيغة المشغل هي:
للعداد = ابدأ حتى النهاية التالي
قبل أن تبدأ الحلقة ، يتم ضبط متغير العداد على البدء. بعد ذلك ، يتم التحقق من استيفاء شرط العداد<= end, при step >= 0 ، أو العداد> = النهاية ، إذا كانت الخطوة سالبة. بعد تنفيذ كتلة الأوامر ، يتم زيادة العداد المتغير بقيمة الخطوة ويتكرر كل شيء من البداية.
لا يُحظر تغيير العداد في نص الحلقة ، ولكن لا يُنصح به بشدة ، لأنه يعقد فهم منطق البرنامج وتصحيحه.
يمكن أن يظهر Exit For في أي عدد من المرات في جسم الحلقة. يمكن أن تتداخل الحلقات. على سبيل المثال ، حلقة مثل هذه تهيئ مصفوفة ثلاثية الأبعاد:
Dim A (9، 9، 9) Dim I، J، K For I = 0 To 9 For J = 0 To 9 For K = 0 To 9 A (I، J، K) = 1 التالي التالي التالي
تكرر جملة For Every..Next loop مجموعة محددة من الأوامر لكل عنصر في مصفوفة أو مجموعة ولها الصيغة التالية:
لكل عنصر في المجموعة التالية
يتم تنفيذ الحلقة إذا كان هناك عنصر واحد على الأقل في المصفوفة أو المجموعة. يمكن أن يظهر Exit For في أي عدد من المرات في جسم الحلقة.
دعنا نوضح استخدام For Each .. بعد ذلك بالرمز التالي ، الذي يعرض قائمة بالملفات من الدليل الجذر لمحرك الأقراص c: \
Dim fso، f، f1، fc، s Set fso = CreateObject ("Scripting.FileSystemObject") تعيين f = fso.GetFolder ("c: \") تعيين fc = f.Files لكل f1 في fc s = s & f1 .name & vbNewLine Next Application.MessageBox s ، "الملفات على c: \" ، vbOkOnly
لحفظ الذاكرة وهيكل البرنامج ، يمكن تنسيق جزء من التعليمات البرمجية التي يتم استدعاؤها بشكل متكرر في أماكن مختلفة كإجراء. هناك نوعان من الإجراءات في VBScript: Subs and Functions. الروتين الفرعي هو سلسلة من العبارات محاطة بالكلمات الرئيسية Sub و End Sub. يمكن أن يقبل الروتين الفرعي المعلمات كمدخلات ، لكنه لا يُرجع قيمة. دالة - سلسلة من العبارات المحاطة بين دالة ووظيفة نهاية - ترجع نتيجة ويمكن بالتالي استخدامها في تعبير. يجب أن يكون لكل إجراء اسم فريد داخل الوحدة النمطية. يجب أن تكون أسماء الإجراءات المعلنة في الوحدة العالمية فريدة من نوعها في جميع أنحاء المشروع.
تعريف روتين فرعي ودالة لهما الصيغة التالية:
| خاص] الاسم الفرعي [(arglist)] End Sub | خاص] اسم الوظيفة [(arglist)] وظيفة النهاية
الإجراءات العامة عالمية ومتاحة في جميع نصوص البرنامج. الإجراءات الخاصة متاحة فقط في البرنامج النصي حيث تم الإعلان عنها. ما لم ينص على خلاف ذلك ، الإجراء المعلن متاح للجمهور. يمكن استخدام الكلمة الأساسية الافتراضية فقط في جسم الفصل وتعمل على الإشارة إلى الطريقة الافتراضية لهذه الفئة.
تحتوي قائمة المعلمات على البنية التالية:
Varname [، ...]
يمكن تمرير المعلمات بالقيمة (ByVal) أو حسب المرجع (ByRef). بشكل افتراضي ، يتم تمرير جميع المعلمات بالقيمة. الثوابت ، يمكن تمرير نتائج تقييم التعبيرات بالقيمة فقط. سيؤدي تغيير المعلمة التي تم تمريرها من خلال المرجع إلى تغيير قيمة المتغير الخارجي. دعونا نشرح نقل المعلمات إلى الإجراء باستخدام المثال التالي:
حساب DoCalculation الفرعي (ByRef A ، ByVal B ، ByVal C) A = C * 2 B = C / 2 End Sub Sub TestVar Dim V1، V2 V1 = 1 V2 = 2 DoCalculation V1، V2، 10 "بعد إجراء DoCalculation" V1 = 20 "V2 = 2 End Sub
المتغيرات المعلنة داخل نص الإجراء محلية ويتم إتلافها عند اكتمال تنفيذه. لا يتم حفظ قيم المتغيرات المحلية.
يشار إلى قائمة المعلمات بين قوسين عند استدعاء وظيفة أو عند استدعاء روتين فرعي باستخدام عامل تشغيل الاتصال. لذلك ، يمكننا كتابة استدعاء إجراء DoCalculation في المثال أعلاه على النحو التالي:
استدعاء DoCalculation (V1، V2، 10)
يتيح لك VBScript إنشاء فئات جديدة ، والتي سنسميها فئات VB فيما يلي. بشكل عام ، فهي ليست فئات كاملة في فهم البرمجة الشيئية ، لأنها لا تدعم الوراثة ، وبالتالي تعدد الأشكال. لذلك ، من بين الحيتان الثلاثة التي يعتمد عليها النموذج الموجه للكائنات ، يبقى التغليف فقط - القدرة على دمج البيانات والأساليب داخل كيان واحد.
يتم تعريف الفصل باستخدام البناء التالي:
بيانات اسم الفئة نهاية الفئة
حيث الاسم هو اسم الفئة والبيانات عبارة عن تعريف واحد أو أكثر للمتغيرات أو الخصائص أو الإجراءات أو الوظائف ، والتي يشار إليها أيضًا باسم أعضاء الفئة. يرجى ملاحظة أنه على عكس دلفي ، حيث يحتوي كود تعريف الصنف على إجراءات ووظائف فقط ، في فئة VB ، تتم كتابة كود العضو مباشرة في نص الفصل.
يمكن إعلان أعضاء الفصل على أنهم خاصون أو عامون. الأول مرئي فقط داخل الكود الخاص بهذه الفئة ، بينما الأخير متاح لكل من الكود الداخلي والخارجي. إذا كان المتغير أو الوظيفة (الإجراء) لا يحتويان على تعريف صريح لـ "عام" أو "خاص" ، فإنه يتم اعتبارهما عامين. الإجراءات أو الوظائف المعلنة على أنها عامة داخل كتلة فئة تصبح طرقًا لهذه الفئة.
المتغيرات التي تم الإعلان عنها كعامة تصبح خصائص فئة إلى جانب الخصائص التي تم الإعلان عنها مباشرةً باستخدام بنيات الحصول على الملكية ، و Property Let ، و Property Set.
أعلاه ، قلنا بالفعل أن حقول الطبقة ، سواء تم الإعلان عنها صراحةً أم لا صراحةً كعامة ، تصبح خصائصها. بالإضافة إلى ذلك ، يمكنك إنشاء خاصية فئة عن طريق تحديد وظائف خاصة لقراءة قيمة الخاصية (الحصول على الخاصية) ، وكذلك لتخصيصها (Property Let أو Property Set).
بناء الجملة لتعريف هذه الوظائف هو كما يلي:
| خاص] الحصول على اسم خاصية [(arglist)] [name = تعبير] [name = تعبير] خاصية إنهاء اسم (قيمة) اسم مجموعة خاصية نهاية ملكية (مرجع) خاصية النهاية
من خلال تحديد وظيفة واحدة فقط ، قراءة أو تعيين ، يمكنك إنشاء خاصية للقراءة فقط أو خاصية الكتابة فقط ، على التوالي. يتم استخدام إجراء Property Let لتعيين أنواع بيانات بسيطة ، ويتم استخدام إجراء مجموعة الخصائص لتمرير مرجع كائن. لاحظ أن جميع الوظائف الثلاثة يمكن أن تقبل قائمة معلمات عشوائية كمدخلات. هذه هي الطريقة التي يمكنك بها تنظيم خصائص المصفوفة ، على سبيل المثال ، عن طريق تمرير مؤشر العنصر كوسيطة.
يتم إنشاء مثيل لفئة VB باستخدام عامل التشغيل الجديد.
خافت X مجموعة X = اسم فئة جديد
يحدث تدمير مثيل تم إنشاؤه مسبقًا تلقائيًا عند اكتمال كتلة التعليمات البرمجية حيث تم الإعلان عن المتغير المقابل بشرط عدم وجود مراجع خارجية له. إذا كنت بحاجة إلى إتلاف المثيل يدويًا ، فيجب عليك تعيين قيمة Nothing إلى المتغير.
إعلان متغير وإنشاء مثيل للفئة Dim X Set X = New classname ... 'باستخدام مثيل للفئة ...' تدمير مثيل للفئة Set X = Notning ...
يقع الحدث Initialize عندما يتم إنشاء مثيل للفئة ، وإنهاء عند إتلافها. يمكن للمطور تحديد معالجات بيانات الأحداث الخاصة بهم. فيما يلي مثال على استخدام أحداث إنشاء وحذف كائن:
Class TestClass "تعريف معالج الحدث تهيئة. Private Sub Class_Initialize MsgBox (" TestClass بدأ ") End Sub" تعريف معالج الحدث Terminate. فئة فرعية خاصة Class_Terminate MsgBox ("تم إنهاء TestClass") End Sub End Class "إنشاء مثيل لفئة TestClass." الرسالة "TestClass بدأ" Set X = New TestClass "تدمير المثيل." الرسالة "تم إنهاء TestClass" Set X = لا شيئ
شيء تقدمت به تمامًا ولم أخبرك عن اثنين المهام مربعات الحوار: MsgBox و InputBox... في هذا البرنامج التعليمي الصغير جدًا ، سأخبرك عن كل التمهيدات لهاتين الوظيفتين. هناك أيضًا طرق أخرى لإنشاء مربعات حوار ، لكن هذا سيتطلب كائنات WSH، والتي سيتم مناقشتها في الدروس القادمة.
الوظيفة الأكثر شيوعًا لعرض الرسالة. بالطبع هو أصعب من صدى الكائن WScript، لكنها لا تحتاج إلى شيء أيضًا.
بناء الجملة: MsgBox (موجه [، أزرار] [، العنوان] [، ملف التعليمات ، السياق])
معامل أزراريمكن أن تأخذ عدة قيم في نفس الوقت. للإشارة إليها ، استخدم علامة "+" أو ببساطة استخدم مجموع القيم. قيم هذه المعلمة موضحة أدناه.
وتجدر الإشارة إلى أن المعلمة أزرارلا يمكن قبول قيم متعددة من نفس الفئة. هذه القيم سوف تضيف ببساطة. أي أنك لن تتمكن من تثبيت عدة مجموعات من الأزرار أو الرموز في نفس الوقت.
"VBScript الدرس رقم 16:" Function MsgBox and InputBox "file_1.vbs" ********************************** * ********************** MsgBox "Hello"، 5 + 16، "Title" MsgBox "Hello"، vbRetryCancel + 16، "Title" MsgBox "Hello" ، vbRetryCancel + 524288، "Title" MsgBox "Hello"، vbAbortRetryIgnore + vbInformation + vbDefaultButton2 + vbSystemModal + 524288، "Title" MsgBox "Hello"، 528706، "Title"
"******************************************************** الدرس رقم 16 لـ VBScript: "دالة MsgBox و InputBox "file_1.vbs "******************************************************** MsgBox "Hello"، 5 + 16، "Title" MsgBox "Hello" ، vbRetryCancel + 16 ، "Title" MsgBox "Hello" ، vbRetryCancel + 524288 ، "Title" MsgBox "Hello" ، vbAbortRetryIgnore + vbInformation + vbDefaultButton2 + vbSystemModal + 524288 ، "العنوان" MsgBox "Hello"، 528706، "Title" |
بالإضافة إلى ذلك ، يمكن لوظيفة MsgBox إرجاع نتيجة الضغط على الأزرار. يمكن تخصيصه لمتغير وبهذه الطريقة تحديد الزر المضغوط.
"************************************************** * ****** "VBScript الدرس رقم 16:" Function MsgBox و InputBox "file_2.vbs" ***************************** ******************************** Dim Knopka Knopka = MsgBox ("اضغط على أي زر" ، 2 ، "العنوان") إذا كان Knopka = 3 ثم MsgBox "قمت بالضغط على الزر - إحباط" ElseIf Knopka = 4 ثم MsgBox "قمت بالضغط على الزر - كرر" Else MsgBox "قمت بالضغط على الزر - تخطي" End If
"************************************************** * ****** "VBScript Lesson # 16:" Function MsgBox and InputBox "file_4.vbs" ***************************** * ******************************* Dim Dict ، AboutBomb Set Dict = CreateObject ("Scripting.Dictionary") Dict.CompareMode = 1 Dict . أضف "أصفر" ، "انفجرت القنبلة!" ألديك. أضف "أحمر" ، "لقد أبطلت مفعول القنبلة!" Dict. أضف "أزرق" ، "انفجرت القنبلة!" Dict. أضف "أخضر" ، "انفجرت القنبلة! ! "AboutBomb = InputBox (" تم اكتشاف قنبلة !!! أي سلك يجب قطعه: أصفر ، أحمر ، أزرق أو أخضر ؟؟ "،" تم اكتشاف قنبلة !!! "،" أدخل لون السلك هنا ... ") إذا كان Dict. موجودًا (AboutBomb) ثم MsgBox Dict.Item (AboutBomb) وإلا MsgBox "بصرك سيء! لا يوجد مثل هذا السلك! القنبلة انفجرت !!! "انتهى إذا
"******************************************************** |
استمرار
يعد برنامج VBS النصي حلاً فعالاً لأتمتة إجراءات المستخدم على أنظمة Windows. يستخدم هذا النوع من البرمجة النصية بشكل شائع في:
بشكل أساسي ، تُستخدم البرامج النصية لـ VBS لمعالجة البيانات وإدارة النظام والعمل مع حسابات المستخدم والكمبيوتر والتفاعل معها تطبيقات المكاتب، والعمل مع قواعد البيانات والمهام المعقدة الأخرى.
اعتمادًا على لغة البرنامج النصي والمحتوى والتشفير ، توجد أنواع البرامج النصية التالية:
في هذه المقالة ، سأبحث في نصوص مثل vbs.
عادةً ما يتم تحرير البرامج النصية في Windows Notepad ، لكنني أوصي باستخدام Notepad2 ، الذي يبرز الكلمات الأساسية لـ Visual Basic ويساعد في تنسيق نص البرنامج النصي. لذلك ، فإن البرنامج النصي vbs هو ملف نصي عادي اسمه * .VBS ، والذي يمكن تحريره بسهولة في المفكرة ، ويتم تشغيله للتنفيذ عن طريق النقر المزدوج أو الاتصال بالاسم في وحدة التحكم.
كما هو موضح أعلاه ، لا يتم تجميع النصوص ، ولكن يتم تفسيرها. بمعنى ، لمعالجة البرنامج النصي ، يجب أن يكون لدى النظام مترجم للغة VBS ، وهناك حتى اثنان من هؤلاء المترجمين الفوريين في Windows: WScript المزود بنوافذ ووحدة التحكم CScript - كلا المترجمين الفوريين هما Windows Script Host (WSH).
بشكل افتراضي ، يتم تنفيذ جميع البرامج النصية من خلال WScript ، أي لا توجد إعدادات مطلوبة ، ولكن لتنفيذ البرنامج النصي في نافذة وحدة التحكم ، يجب عليك تشغيله من خلال CScript ، أو تعيين CScript كمترجم افتراضي. للقيام بذلك ، قم بما يلي في سطر الأوامر:
CScript // H: CScript
بعد ذلك ، سيتم تنفيذ جميع البرامج النصية في وضع وحدة التحكم. تتم العودة إلى وضع الإطارات باستخدام الأمر التالي:
CScript // H: WScript
تعمل القواعد التالية في Visual Basic:
"=== رأس معلومات البرنامج النصي ===" اسم البرنامج النصي: "اسم البرنامج النصي ؛" التاريخ: "تاريخ التعديل ؛" المؤلف: "المؤلف ؛" الوصف: "الوصف ؛" === كتلة التهيئة === توجيه الخيار الصريح " النهي الخلق التلقائي"المتغيرات ؛ خافت
بشكل افتراضي ، يتم الإعلان عن المتغيرات في البرامج النصية تلقائيًا عند استخدامها لأول مرة في نص البرنامج النصي ، ما لم يكن ذلك ممنوعًا بواسطة التوجيه Option Explicit. إذا قمت بتعريف الأمر Option Explicit في بداية البرنامج النصي ، فيجب تحديد جميع المتغيرات مسبقًا باستخدام التركيبات التالية:
خافت
يتم الإعلان عن الثوابت في بداية البرنامج النصي باستخدام البناء:
مقدار ثابت
يتم تعيين نوع المتغير تلقائيًا بعد إدخال القيمة الأولى فيه. توجد أنواع البيانات التالية في Visual Basic:
يمكن التحقق من توافق البيانات مع الأنواع ، وكذلك ترجمتها من نوع إلى آخر ، إذا كانت القيم تسمح بذلك. للعمليات على أنواع البيانات ، يتم استخدام الأوامر التالية:
VarType (
كما ذكر أعلاه ، لا يفرض Visual Basic قيودًا صارمة على أسماء المتغيرات ، ولكن في نفس الوقت ، توجد إرشادات لأسماء المتغيرات بحيث يسهل تحديد نوع البيانات في نص البرنامج النصي. للقيام بذلك ، يوصى بوضع الرموز الشرطية أمام اسم المتغير الذي يحدد نوع المتغير:
يمكن استخدام المصفوفات المتغيرة في البرامج النصية VBS لتخزين القوائم والجداول وحتى التركيبات الأكثر تعقيدًا. يمكن أن تكون المصفوفات (القوائم) أحادية البعد ديناميكية ، أي أنها تسمح لك بتغيير أبعادها في سياق النص. يتم التصريح عن جميع المصفوفات باستخدام الأمر Dim:
خافت
مثال على استخدام المصفوفات
Dim aMyArray1 (10،10) "إنشاء مصفوفة ثابتة بأبعاد 11x11 ؛ Dim aMyArray2 ()" إنشاء مصفوفة ديناميكية ؛ aMyArray1 (0،0) = "Hello" ملء المصفوفة ؛ aMyArray1 (0،1) = "People" "يملأ المصفوفة ؛ aMyArray1 (1،0) = يملأ "العالم" المصفوفة.
قبل استخدام مصفوفة ديناميكية ، تحتاج إلى تحديد البعد الحالي باستخدام الأمر ReDim ، وبعد ذلك يمكن إعادة تشكيل المصفوفة في أي مكان في البرنامج النصي ، أثناء مسح المصفوفة بأكملها أو الاحتفاظ بقيم الخلية القديمة باستخدام أمر الاحتفاظ:
ReDim aMyArray2 (0) "تشكيل مصفوفة من عنصر واحد ؛ aMyArray2 (0) =" Hello "" ملء المصفوفة ؛ ReDim aMyArray2 (1) "حذف المصفوفة القديمة وتشكيل مصفوفة جديدة من" العناصر الأخرى ؛ aMyArray2 (0) = "Hello" "ملء المصفوفة ؛ aMyArray2 (1) =" World "" ملء المصفوفة ؛ ReDim Preserve aMyArray2 (2) "تشكيل مصفوفة من ثلاثة عناصر ، وترك" القيم القديمة للعناصر في الخلايا حيث كانت ؛ aMyArray2 (1) = "!" "ملء المصفوفة ؛ محو aMyArray2" حذف المصفوفة.
لمعرفة أبعاد المصفوفة ، يستخدمون عادةً دالة UBound ، والتي ستتم مناقشتها أدناه جنبًا إلى جنب مع الوظائف الأخرى للعمل مع البيانات.
لا يكتمل سيناريو واحد كامل بدون تفريع ، فالتفرع يساعدك على اختيار المسار الصحيح عندما يتم استيفاء بعض الشروط أم لا. بمعنى آخر ، تقوم الفروع بتنفيذ منطق البرنامج النصي. يتم تنفيذ العديد من آليات التفرع في البرامج النصية VBS. دعونا نعتبرها بالترتيب.
بناء لإجراء شرطي واحد:
لو
بناء لعدة إجراءات شرطية:
لو
بناء الشوكة:
لو
إنشاء "شوكة في عدة مسارات" (الخيار cIf):
لو
في جميع التركيبات المذكورة أعلاه ، تنطبق القاعدة التالية: "إذا كان الشرط
إنشاء "شوكة في عدة مسارات" (ج حدد الخيار):
إختر حالة
في هذا البناء ، تعمل القاعدة: "إذا كانت قيمة المتغير
لتنظيم الإجراءات المتكررة أو تكرار عناصر المصفوفة ، تُستخدم الحلقات عادةً. يتم تنظيم عدة أنواع من الحلقات في نصوص VBS: حلقة منتظمة ، وحلقة مع عدد غير معروف من التكرارات ، وحلقة شرطية.
يتم تنظيم الحلقة المعتادة بواسطة بنية For - Next ، في وسيطات أي معلمات مثل اسم العداد (
ل
إذا كان من الضروري أثناء عملية الحلقة إيقاف التكرار على القيم ، فيمكن القيام بذلك باستخدام الأمر Exit For
ل
عادةً ما تُستخدم الحلقة التي تحتوي على عدد غير معروف من التكرارات للتكرار عبر جميع القيم الموجودة في مجموعة كائن عندما يكون بُعده غير معروف. هذا الهيكل سوف يتكرر على جميع القيم (
لكل
لكل oCurrentFile في ملفات WScript.Echo oCurrentFile.Name التالي
تُستخدم الحلقات ذات الشروط لمعالجة البيانات عند استيفاء شرط معين. هذه الحلقات من نوعين: مع فحص في بداية الدورة وفحص في النهاية.
التكرار أثناء استيفاء الشرط ، مع إجراء فحص في البداية
افعل اثناء
قم بالتكرار حتى يتم استيفاء الشرط ، مع إجراء فحص في البداية
افعل حتى
كما ذكر أعلاه ، يمكن وضع الشروط في نهاية الدورة. في هذه الحالة ، سيتم تنفيذ جسم الحلقة مرة واحدة على الأقل. كما هو الحال في الحلقات العادية ، يمكن مقاطعة الحلقة الشرطية باستخدام الأمر Exit Do:
يفعل
للعمل مع البيانات وبناء إجراءاتها ووظائفها ، اهتم مطورو Visual Basic بالفعل بقاعدة البرمجة النصية - الوظائف الأساسية. وظائف VBS-scripts للعمل مع التواريخ والسلاسل والأرقام ، بالإضافة إلى إجراءات الإدخال / الإخراج الأساسية وإجراءات العمل مع الشبكة. دعنا نلقي نظرة سريعة على الوظائف المضمنة.
وظائف معالجة التاريخ:
التاريخ "إرجاع التاريخ الحالي ؛ الوقت" إرجاع الوقت الحالي ؛ الآن "إرجاع التاريخ والوقت الحاليين ؛ DateDiff (
وظائف معالجة السلاسل:
تصاعدي (
الدوال الرياضية:
Randomize "يهيئ آلية الأرقام العشوائية (لا يُرجع شيئًا) ؛ Rnd" يُرجع قيمة عشوائية غير عدد صحيح بين 0 و 1 ؛ Atn (
وبالطبع ، بالإضافة إلى الوظائف المذكورة ، تدعم السكربتات أبسط العمليات الحسابية والمنطقية:
يتم تحديد ترتيب تنفيذ العمليات كما هو الحال في جميع لغات البرمجة: أولاً ، يتم تنفيذ العمليات بين الأقواس ، ثم يتم حساب الوظائف ، ثم عمليات الضرب والقسمة ، متبوعة بالجمع والطرح ، وتكمل العمليات المنطقية الحساب.
تتيح لك النصوص المكتوبة في Visual Basic تحديد الإجراءات والوظائف المخصصة واستدعائها من البرنامج الرئيسي. لا يوجد فرق عمليًا بين الإجراء والوظيفة ، ويكمن الاختلاف في المعنى المنطقي لهذه الإجراءات الفرعية: تُستخدم الدوال عادةً لحساب بعض القيمة ، وتُستخدم الإجراءات لأداء الإجراءات. ومع ذلك ، يمكن لكل من الإجراءات والوظائف تنفيذ العمليات وتمرير القيم إلى البرنامج الرئيسي. على الرغم من ذلك ، يجب ألا تنسى الغرض من هذه الإجراءات الفرعية: الوظائف - للحسابات ، والإجراءات - للإجراءات.
يتم الإعلان عن الوظيفة بواسطة عامل تشغيل الوظيفة ، متبوعًا باسم الوظيفة المعرفة بواسطة المستخدم ، والتي يجب ألا تتطابق مع أي كلمة محجوزة للغة Visual Basic ، ثم يتم الإشارة إلى المتغيرات التي سيتم تمريرها إلى الروتين الفرعي كمعلمات - تحديد المتغيرات في هذا البناء تعني تخصيص خلايا ذاكرة لمتغيرات الروتين الفرعي (متغيرات التصريح عن الوظيفة). في نص الروتين الفرعي ، لا تختلف بنية البرنامج النصي عن البرنامج العادي (هنا يمكنك إعلان متغيرات إضافية ، وإجراء عمليات ، واستخدام وظائف وإجراءات أخرى) ، في نهاية النص يجب أن يكون هناك عامل للتعيين دالة لبعض القيمة - سيتم إرجاع هذه القيمة إلى البرنامج الرئيسي. يمكنك مقاطعة تنفيذ إحدى الوظائف باستخدام عبارة Exit Function ، ولكن في هذه الحالة يجب أن تتذكر تعيين قيمة للدالة ، وإلا فإن النص البرمجي سينشئ خطأ. تنتهي الوظيفة بعبارة End Function.
تعريف الوظيفة
وظيفة
استدعاء وظيفة
يتم تعريف الإجراء بشكل مشابه للدالة ، ولكن مع عامل فرعي مختلف. نظرًا لأن الإجراء لا يعيد أي قيم إلى البرنامج الرئيسي ، فلا يوجد بيان تخصيص قبل الخروج من الإجراء. يمكن مقاطعة تنفيذ الإجراء باستخدام الأمر Exit Sub ، ويكتمل الهيكل بأكمله باستخدام جملة End Sub. لاستدعاء إجراء في البرنامج الرئيسي ، يجب عليك استخدام الكلمة الأساسية Call واسم الوظيفة مع الوسائط المطلوبة. (الكلمة الأساسية الاتصال اختيارية ، لكني أوصي باستخدامها لتجنب استدعاءات الإجراءات غير الصحيحة.)
تحديد الإجراء
الفرعية
استدعاء الإجراء
بالمناسبة ، يجب وضع الإجراءات والوظائف في نهاية البرنامج النصي.
أثناء تشغيل الروتين الفرعي ، لا تتغير قيم المتغيرات في الجزء الرئيسي من البرنامج النصي ، حتى إذا كان الروتين الفرعي يحتوي على متغيرات من نفس الاسم. لكي يتمكن الروتين الفرعي من تغيير قيم متغيرات البرنامج النصي الرئيسي ، من الضروري تعيين خاصية المتغير كـ ByRef في وسيطات الروتين الفرعي. بشكل افتراضي ، يتم تحديد جميع المتغيرات باستخدام خاصية ByVal.
الفرعية
في هذه الحالة ، الحجة
بشكل افتراضي ، يتم معالجة جميع الأخطاء بواسطة البرنامج النصي في الوضع التلقائي ، وفي حالة حدوث خطأ ، يتوقف البرنامج النصي. لتعطيل المعالجة التلقائية للأخطاء ، تحتاج إلى استخدام توجيه خاص On Error Resume Next ، والذي يعطل المعالجة التلقائية للأخطاء ويستمر البرنامج النصي حتى إذا كان موجودًا. لمعالجة الأخطاء يدويًا ، تحتاج إلى الرجوع إلى كائن Err المدمج ، الذي يخزن حالة الخطأ. كائن Err له الخصائص والأساليب التالية:
رقم "إرجاع رقم الخطأ الأخير ؛ الوصف" إرجاع وصف الخطأ الأخير ؛ امسح "مسح خطأ الكائن ؛ رفع" استدعاء خطأ اختبار.
مثال على معالجة الأخطاء يدويًا:
عند استئناف الخطأ التالي ، iTotalPoints = InputBox ("أدخل العدد الإجمالي للنقاط") iNumberOfTests = InputBox ("أدخل عدد الاختبارات") iAvarage = iTotalPoints / iNumberOfTests حدد حالة Err.Number 0 "لا توجد أخطاء ؛ متوسط WScript.Echo" = "& CStr (iAvarage) الحالة 11" قسمة الصفر ؛ WScript.Echo "لا يمكن أن يكون عدد الاختبارات صفر" حالة 13 "نوع غير متطابق ؛ WScript.Echo" لقد أدخلت قيمة غير رقمية "Case Else" بدون أخطاء ؛ WScript.Echo "خطأ غير معروف WScript.Quit" حدد إنهاء
نصوص VBS ، مثل اللغة الأم - لغة Visual Basic ، هي لغة برمجة موجهة للكائنات ، أي أن المفهوم الرئيسي هو مفهوم الكائنات والفئات
الفئة هي نوع يصف كيفية بناء الكائنات. الكائن يعني شيئًا له سلوك معين وطريقة عرض ، والكائن هو مثيل لفئة. يمكن مقارنة فئة بالرسم وفقًا للكائنات التي يتم إنشاؤها. عادةً ما يتم تصميم الفئات بحيث تتوافق كائناتها مع الكائنات الموجودة في المجال.
لذلك ، للعمل مع كائن ، يجب عليك أولاً إنشاؤه باستخدام فئات من المكتبة المطلوبة:
يضع
يمكنك حذف كائن عن طريق تعيينه على "لا شيء":
يضع
كل الكائنات التي يعمل معها Windows Script Host لها أساليب وخصائص. للإشارة إلى طريقة ، يجب عليك تحديد كائن ، ومن خلال نقطة - طريقة مع المعلمات المطلوبة.
يتشابه الموقف مع الخصائص ، ولكن يمكن تخصيص الخصائص وقراءتها في متغيرات وخصائص أخرى ، ومع ذلك ، يجب أن تأخذ في الاعتبار نوع بيانات المتغيرات والخصائص ، وإلا فإن البرنامج النصي سينشئ خطأ في عدم توافق نوع البيانات.
مثال. إنشاء كائن نظام الملفات ، واستدعاء طريقة إنشاء المجلد ، وحذف الكائن. تعيين oFSO = CreateObject ("Scripting.FileSystemObject") استدعاء oFSO.CreateFolder ("C: \ Test") تعيين oFSO = لا شيء لاحظ أن "الكائن" يشير إلى منطق البرنامج النصي ، وليس منطق نظام الملفات. أي عندما نقول "حذف كائن" ، فإننا نعني كائن نص منطقي لا يؤثر بأي شكل من الأشكال على حذف بعض أجزاء نظام الملفات. لمعرفة المكتبات الموجودة في نظام التشغيل الخاص بك ، والفئات المضمنة في المكتبات ، وطرقها وخصائصها ، يمكنك استخدام مستكشف الكائنات ، على سبيل المثال ، من Microsoft Word: إذا لم تظهر بعض المكتبات في القائمة ، فيمكن توصيلها عبر قائمة الأدوات -> المراجع. توجد عمليات في البرامج النصية غير مضمنة في أي فئة ، وهي متوفرة مباشرة في نص البرنامج النصي: MsgBox ( مثال على عرض مربع حوار مع طلب نص ، ثم عرض رسالة نافذة مع النص المدخل. MyValue = InputBox ("أدخل نصًا" ، "النافذة الأولى" ، "يجب إدخال النص هنا") MyResult = MsgBox (MyValue، 1، "النافذة الثانية") لا تتطلب أساليب وخصائص فئة WScript الجذر إنشاء كائن - فهي متاحة تلقائيًا للاستخدام مباشرة في نص البرنامج النصي. إنشاء كائن ( سنقوم بتحليل تطبيق هذه الأساليب والخصائص بمزيد من التفصيل في أمثلة الفئات الأخرى. للعمل مع نظام التشغيل ، يتم استخدام فئة خاصة من Shell ، والتي تتيح لك إجراء عمليات مثل تشغيل البرامج ، وتعديل السجل ، وإنشاء الاختصارات ، والوصول إلى مجلدات النظام ومتغيرات النظام ، والوصول إلى سجل النظام. إذن ، طرق وخصائص فئة شل: توسيعالبيئةالربيع ( مثال. استخدام طرق وخصائص فئة شل. "إنشاء كائن من فئة Shell Set oShell = Wscript.CreateObject (" WScript.Shell ")" تشغيل الآلة الحاسبة oShell.Run ("Calc.exe") "Delay WScript.Sleep (100)" تشغيل notepad oShell.Run ("Notepad .exe ")" Delay WScript.Sleep (100) "التبديل إلى نافذة الآلة الحاسبة oShell.AppActivate" Calculator "" Delay WScript.Sleep (100) "محاكاة ضغطات المفاتيح oShell.SendKeys (" 1 (+) 2 (=) ") "الحصول على مسارات سطح المكتب sDesktopPath = oShell.SpecialFolders (" Desktop ")" إنشاء كائن اختصار Set oLink = oShell.CreateShortcut (sDesktopPath & "\ Test.lnk") "تخصيص الاختصار oLink.TargetPath = WScript.ScriptFullName oLink.WindowLink = WScript.ScriptFullName oLink.WindowLink = "CTRL + SHIFT + T" oLink.IconLocation = "notepad.exe، 0" oLink.Description = "اختبار الارتباط" oLink.WorkingDirectory = sDesktopPath oLink.Save "إنشاء كائن بيئة والحصول على خصائص النظام فيه تعيين oSysEnv = oShell. البيئة ("SYSTEM") "عرض رسالة حول عدد المعالجات على الشاشة MyResult = oShell.Popup (" عدد المعالجات: "& oSysEnv (" NUMBER_OF_PROCESSORS ")، _ 3،" Message "، 0)" Getting the path to مجلد Windowsوعرض رسالة على الشاشة 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 Value ")" اكتب قيمة رقمية في التسجيل MyResult = oShell.RegWrite ("HKCU \ ScriptEngine \ Key"، 1، "REG_DWORD") "حذف مفتاح التسجيل MyResult = oShell.RegDelete (" HKCU \ ScriptEngine \ ")" كتابة حدث في سجل النظام MyResult = oShell. LogEvent (0، "اكتمل اختبار البرنامج النصي") كما رأينا بالفعل ، يمكن أن تعمل نصوص VBS مع ملفات ويندوز شللكن هذا ليس احتمالهم الوحيد. باستخدام فئة الشبكة ، يمكنك الوصول إلى كائنات الشبكة وإدارتها. دعنا نلقي نظرة فاحصة على فئة الشبكات: ComputerName "إرجاع اسم الكمبيوتر ؛ UserDomain" إرجاع اسم المجال ؛ اسم المستخدم "إرجاع اسم المستخدم ؛ EnumNetworkDrives" إرجاع قائمة محركات أقراص الشبكة المعينة ؛ شبكة خريطة القيادة ( مثال. استخدام طرق وخصائص فئة الشبكة. "إنشاء كائن من فئة Network Set oNetwork = WScript.CreateObject (" WScript.Network ")" عرض رسالة حول اسم الكمبيوتر WScript.Echo "Computer Name =" & oNetwork.ComputerName "" عرض رسالة حول اسم المستخدم الحالي WScript.Echo "User Name =" & 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 "" إعداد طابعة افتراضية على Network.SetDefaultPrinter "\\ Server \ Printer" "الحصول على مجموعة متصلة الطابعات تعيين oPrinters = oNetwork.EnumPrinterConnections غالبًا ما توجد في السيناريوهات حالات يكون فيها من الضروري إنشاء شيء ما أو حذفه أو نقله أو تغييره على قرص الكمبيوتر. يمكن حل هذه المهمة عن طريق فئة FileSystemObject ، المصممة للعمل معها نظام الملفات... فيما يلي الكائنات التي يمكن أن ينشئها هذا الفصل: طرق وخصائص فئة FileSystemObject (الكائن الرئيسي): مسار بناء ( تقوم كائنات محركات الأقراص والمجلدات والملفات الخاصة بفئة FileSystemObject بتخزين معلومات حول الأقراص والمجلدات والملفات وتستخدم بشكل أساسي لجمع المعلومات حول نظام الملفات. لديهم خاصيتين فقط: إرجاع "Count" عدد العناصر في المجموعة ؛ العنصر ( لتوضيح ماهية مجموعة الكائنات ، ضع في اعتبارك مثالاً لعرض قائمة بالملفات في جذر محرك الأقراص C: "إنشاء كائن من فئة FileSystemObject Set oFSO = CreateObject (" Scripting.FileSystemObject ")" إنشاء مجموعة مجلدات كائن oFolder = oFSO.GetFolder ("C: \") "الحصول على مجموعة من الملفات Set oFilesCollection = oFolder.Files" الحصول على عدد العناصر في المجموعة sResult = sResult & oFilesCollection.Count & "files in C: \" & vbCrLf "قراءة سمات كل ملف من المجموعة لكل ملف في oFilesCollection sResult = sResult & oFile.Name & vbTab sResult = sResult & oFile.Size & vbCrLf بجانب الشاشة MsgBox (sResult) يوفر كائن Drive الوصول إلى خصائص محرك أقراص محلي أو محرك أقراص الشبكة: AvailableSpace "إرجاع مقدار مساحة القرص الحرة المتوفرة للمستخدم ؛ DriveLetter" إرجاع حرف محرك الأقراص ؛ DriveType "يُرجع نوع محرك الأقراص ؛ FileSystem" يُرجع نوع نظام الملفات لمحرك الأقراص ؛ FreeSpace "إرجاع مقدار مساحة القرص الحرة ؛ IsReady" إرجاع مساحة القرص المتوفرة؛ يقوم المسار "بإرجاع المسار إلى محرك الأقراص ؛ يقوم RootFolder" بإنشاء كائن مجلد يشير إلى جذر محرك الأقراص ؛ إرجاع SerialNumber " رقم سريالقرص. ShareName "إرجاع اسم شبكة محرك الأقراص ؛ TotalSize" إرجاع سعة محرك الأقراص بالبايت؛ يقوم VolumeName بإرجاع أو تعيين تسمية القرص. يوفر كائن المجلد إمكانية الوصول إلى جميع خصائص المجلد ، ويسمح لك أيضًا بتنفيذ الإجراءات عليه: السمات "إرجاع سمات المجلد ؛ DateCreated" إرجاع تاريخ إنشاء المجلد ؛ DateLastAccessed "يُرجع تاريخ آخر وصول إلى المجلد ؛ ويعيد DateLastModified" تاريخ تعديل المجلد ؛ محرك الأقراص "إرجاع حرف محرك الأقراص حيث يوجد المجلد ؛ الملفات" إرجاع مجموعة الملفات في المجلد ؛ IsRootFolder "إرجاع True إذا كان المجلد هو جذر محرك الأقراص ؛ الاسم" بإرجاع اسم المجلد ؛ يقوم ParentFolder بإنشاء كائن مجلد يشير إلى "المجلد الأصل؛ المسار "إرجاع المسار إلى المجلد ؛ ShortName" إرجاع اسم المجلد بتنسيق 8.3 ؛ ShortPath "إرجاع المسار إلى المجلد بتنسيق 8.3 ؛ الحجم" إرجاع حجم المجلد ؛ SubFolders "إرجاع مجموعة من المجلدات الفرعية ؛ النوع" إرجاع نوع المجلد ؛ ينسخ ( يشبه كائن File كائن Folder - فهو يوفر الوصول إلى جميع خصائص الملف ، ويسمح لك أيضًا بتنفيذ إجراءات عليه: السمات "إرجاع سمات الملف ؛ DateCreated" إرجاع تاريخ إنشاء الملف ؛ يُرجع DateLastAccessed "تاريخ آخر وصول إلى الملف ؛ يعرض DateLastModified" تاريخ تعديل الملف ؛ محرك الأقراص "إرجاع حرف محرك الأقراص حيث يوجد الملف ؛ الاسم" إرجاع اسم الملف ؛ يقوم ParentFolder بإنشاء كائن مجلد يشير إلى "المجلد الأصل؛ إرجاع المسار "المسار إلى الملف ؛ ShortName" بإرجاع اسم الملف بتنسيق 8.3 ؛ ShortPath "إرجاع المسار إلى الملف بتنسيق 8.3 ؛ الحجم" إرجاع حجم الملف ؛ اكتب "إرجاع نوع الملف ؛ نسخ ( كائن TextStream هو أداة للوصول إلى محتويات الملف. باستخدامه ، يمكنك قراءة الملف وتعديله: AtEndOfLine "يشير إلى ما إذا تم الوصول إلى نهاية السطر ؛ AtEndOfStream" يشير إلى ما إذا تم الوصول إلى نهاية السطر ؛ العمود "يُرجع رقم العمود الذي يوجد به مؤشر القراءة ؛ السطر" يُرجع رقم السطر الذي يوجد به مؤشر القراءة ؛ إغلاق "يغلق الملف - يحرره لعمليات أخرى ؛ اقرأ ( تعرفنا على جميع طرق وخصائص فئة FileSystemObject ، ضع في اعتبارك مثالًا على استخدام هذه الفئة: "تعيين ثوابت أكواد مجلد النظام Const WindowsFolder = 0 Const SystemFolder = 1 Const TemporaryFolder = 2" تعيين ثوابت الرموز لأنواع الوصول إلى الملف النصي Const ForReading = 1 Const ForWriting = 2 Const ForAppending = 8 "إنشاء كائن من فئة FileSystemObject Set oFSO = CreateObject ("Scripting.FileSystemObject") "الحصول على مجموعة محركات الأقراص تعيين DrivesCollection = oFSO.Drives" معالجة كل محرك أقراص للحصول على التسمية أو اسم الشبكة لكل محرك أقراص في DrivesCollection sResult = sResult & oDrive .DriveLetter & ":" If oDrive.DriveType = Remote ثم sResult = sResult & oDrive.ShareName & vbCrLf ElseIf oDrive.IsReady ثم sResult = sResult & oDrive.VolumeName & vbCrLf ElseesRfult = " screen Wscript.Echo "= oFSO.GetDrive (" C ") sResult = oDrive.DriveLetter &": - "" الحصول على نوع محرك الأقراص C: حدد Case oDrive.DriveType الحالة 0: sResult = sResult & "غير معروف -" الحالة 1: sResult = sResult & "قابل للإزالة -" الحالة 2: sResult = sResult & "تم إصلاحه -" الحالة 3: sResult = sResult & "الشبكة -" الحالة 4: sResult = sResult & "قرص مضغوط -" الحالة 5: sResult = sResult & "RAM Disk -" End Select "تحديد مدى توفر القرص والحصول على خصائصه إذا كان oDrive.IsReady ثم sResult = sResult &" Ready "& vbCrLf sResult = sResult &" FileSystem is "& oDrive.FileSystem & vbCrLf sResult = sResult = "المساحة المتوفرة:" & _ FormatNumber (oDrive.AvailableSpace / 1024، 0) & "Kbytes" Else sResult = sResult & "غير جاهز" End If "إخراج النتائج إلى الشاشة Wscript.Echo (sResult)" إنشاء مجلد خدمة كائن (مجلد ملفات Windows المؤقتة) تعيين oTempFolder = oFSO.GetSpecialFolder (TemporaryFolder) "قم بإنشاء كائن ملف نصي (وقم بإنشائه في جذر محرك الأقراص C :) تعيين oFile = oFSO.CreateTextFile (" C: \ TestFile.txt " ، صحيح) "الكتابة إلى ملف نصي oFile.WriteLine (" هذا اختبار. ") oFile.WriteLine (sResult)" إغلاق الملف النصي وتحريره للآخرين rocess oFile.Close "تحقق من وجود ملف في المجلد المؤقت ملفات الويندوز، حذف هذا الملف إذا كان oFSO.FileExists (oFSo.BuildPath (oTempFolder.Path، "TestFile.txt")) ثم _ oFSO.DeleteFile (oFSo.BuildPath (oTempFolder.Path، "TestFile.txt")) "إنشاء مجموعة كائنات الملف oFile = oFSO.GetFile ("C: \ TestFile.txt") "نقل الملف إلى مجلد ملفات Windows المؤقتة oFile.Move (oFSo.BuildPath (oTempFolder.Path،" TestFile.txt "))" تغيير سمة الملف إذا كان oFile. السمات و 32 ثم oFile.Attributes = oFile.attributes - 32 Wscript.Echo ("تم مسح بت الأرشيف") Else oFile.Attributes = oFile.attributes + 32 Wscript.Echo ("تم تعيين بت الأرشيف") End If sResult = oFile .Path & vbCrLf & oFile.DateLastModified & ":" & vbCrLf "قم بإنشاء كائن دفق بفتح ملف لقراءة Set oTestFile = oFSO.OpenTextFile (oFile.Path، ForReading، False)" قراءة دفق حتى نهايته تمت مصادفة Do while oTestFile .AtEndOfStream<>True sResult = sResult & oTestFile.ReadLine Loop "إغلاق الملف النصي وتحريره لعمليات أخرى oTestFile.Close" عرض رسالة على الشاشة Wscript.Echo (نتيجة) تم تصميم هذا البرنامج النصي لتنظيف النظام من الملفات القديمة في مؤقتة أدلة Windowsوملفات تعريف المستخدمين. في هذا المثال ، يمكنك أن ترى كيف تعمل جميع التركيبات المذكورة أعلاه تقريبًا: بنية البرنامج النصي ، وأسماء المتغيرات ، والعمل مع المصفوفات والمجموعات ، ومعالجة الأخطاء يدويًا ، وقراءة متغيرات النظام ، وإنشاء ملف نصي لسجل البرنامج النصي ، العمل مع نظام الملفات ، باستخدام الإجراءات. "==== رأس معلومات البرنامج النصي ====" اسم البرنامج النصي: Purge Temp "الإصدار: 1.0" التاريخ: 16.07.08 "autor: Bochkarev Vitaly" الوصف: يقوم البرنامج النصي بإزالة الملفات المؤقتة القديمة من الكمبيوتر "==== المنطق الرئيسي للبرنامج النصي ==== "تمكين المعالجة اليدوية للأخطاء عند الخطأ ، استئناف التالي" ثابت للفاصل الزمني عندما تعتبر الملفات قديمة PurgeTime = 14 "يومًا" استثناءات - ملفات تعريف المستخدمين التي لا يجب معالجتها Dim aExceptions (3) aExceptions ( 0) = "المستخدم الافتراضي" aExceptions (1) = "LocalService" aExceptions (2) = "NetworkService" aExceptions (3) = "All Users" "إنشاء Shell ومجموعة كائنات نظام الملفات oShell = CreateObject (" wscript.shell ") تعيين oFSO = CreateObject ("Scripting.Filesystemobject") "تحديد مسارات مجلد الخدمة sProgramFiles = oShell.ExpandEnvironmentStrings ("٪ ProgramFiles٪ ") sWinDir = oShell.ExpandEnvironmentStrings ("٪ WinDir٪ ") sWinTempFolder =" Documents وإعدادات "" إنشاء سجل عمل المشهد sLogFileName = sWinTempFolder & "\ PurgeTemp_" & Date sLogFileName = استبدال (sLogFileName، "."، "_") sLogFileName = استبدال (sLogFileName، "/"، "_") تعيين oLogFile = oTFSO.Cile log "، true) .WriteLine "========== ابدأ التنظيف ==========" "تنظيف مجلد Windows temp oLogFile.WriteLine vbCrLf &" ======= === Windows المؤقت folder ========== "PurgeFolder (sWinTempFolder)" قم بإزالة المجلد المؤقت لملف تعريف المستخدم وملفات الإنترنت oLogFile.WriteLine vbCrLf & _ "========== المستخدمون المؤقتون والإنترنت المؤقت للمستخدمين الملفات ========== "تعيين oDocuments = oFSO.GetFolder (sDocuments) تعيين colProfiles = oDocuments.SubFolders لكل oProfiles في colProfiles bFlag = false لكل استثناء في استثناءات إذا كان InStr (oProfile.Path ، استثناء)> 0 ثم bFlag = true exit for end if Next إذا كان التالي bFlag = False ثم PurgeFolder (oProfile.Path & "\ Local Settings \ Temp") PurgeFolder (oProfile.Path & "\ Local Settings \ Temporary Internet Files") End If Next "مسح NOD32 Quarantine oLogFile.WriteLine vbCrLf &" ========== NOD32 Quarantine =========== "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، True" تحقق من وجود أخطاء في حالة الخطأ.<>0 ثم "اكتب رسالة خطأ إلى سجل البرنامج النصي oLogFile.Writeline" -----> Error # "& CStr (Err.Number) _ &" "& Err.Description" امسح الخطأ Err. امسح النهاية إذا "توقف عند 20 مللي ثانية WScript.Sleep 20 End if التالي "استرداد مجموعة من المجلدات الفرعية تعيين colSubFolders = oFolder.SubFolders" معالجة كل مجلد فرعي لكل مجلد oSubFolder In colSubFolders "استدعاء متكرر لإجراء حذف الملفات القديمة - يستدعي الإجراء الفرعي نفسه PurgeFolder (oSubFolder.Path. ) "If oSubFolder.Size = 0 ثم" اكتب رسالة إلى سجل البرنامج النصي oLogFile.Writeline oSubFolder.Path & vbTab & oSubFolder.DateCreated "احذف المجلد الفارغ oFSO.DeleteFolder oSubFolder.Path" تحقق من وجود أخطاء إذا كان err.Number<>0 ثم "اكتب رسالة خطأ إلى سجل البرنامج النصي oLogFile.Writeline" -----> Error # "& CStr (Err.Number) _ &" "& Err.Description" مسح الخطأ Err.Clear End if Next End Sub لذلك رأينا أساسيات برنامج Visual Basic. دعونا نلخص ونحدد إيجابيات وسلبيات هذه السيناريوهات: فيتالي بوشاريف قسم الروابط الخارجية ، أي روابط المواقع الأخرى التي لا علاقة لهذا المورد بها ، بالإضافة إلى أن مالك موقع الموقع لا يتحمل أي مسؤولية عن توفر هذه الموارد ومحتواها.طرق وخصائص فئة الجذر WScript
طرق وخصائص فئة شل
طرق وخصائص فئة الشبكة
خصائص وأساليب فئة FileSystemObject
حذف البرنامج النصي للملفات القديمة
روابط خارجية