أساسيات VBScript. VBScript. أساسيات VBScript لماذا البرامج النصية VBS

09.12.2020

أنواع البيانات

يستخدم 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 في السطر الأول من نص البرنامج النصي ، فيمكن استخدام المتغيرات بدون تصريح. لكن هذا المسار يمكن أن يؤدي إلى أخطاء يصعب اكتشافها. يكفي ارتكاب خطأ مرة واحدة في تهجئة اسم المتغير في نص البرنامج للحصول على نتيجة غير متوقعة. نوصي دائمًا بتحديد الخيار صريح والإعلان عن المتغيرات.

يجب أن يستوفي اسم المتغير المتطلبات التالية:

  1. ابدأ بحرف الأبجدية اللاتينية ؛
  2. تتكون فقط من أحرف الأبجدية اللاتينية أو أحرف الأبجدية اللاتينية والأرقام ؛
  3. لا تتجاوز 255 حرفًا في الطول ؛
  4. كن فريدًا في نطاقك.

النطاق والعمر

يتم تحديد نطاق المتغير من خلال المكان الذي تم الإعلان عنه فيه. إذا كان داخل جسم الإجراء ، فإن هذا المتغير يسمى محليًا ولا يتوفر إلا في هذا الإجراء. إذا تم الإعلان عن متغير في نص البرنامج النصي ، فسيكون مرئيًا لجميع الإجراءات أو الوظائف المحددة في هذا البرنامج النصي. يمكن أن يكون للمتغيرات المحلية نفس الاسم إذا تم التصريح عنها في إجراءات مختلفة.

في شجرة المستكشف في نافذة محرر كائنات البرنامج النصي ، يوجد قسم خاص - الثوابت والمتغيرات - للإعلان عن المتغيرات العامة المرئية لجميع وظائف البرنامج النصي للمشروع.

يخصص المترجم ذاكرة للمتغيرات المحلية في وقت الإعلان عنها ويحررها عند الخروج من الإجراء. توجد المتغيرات العامة من لحظة الإعلان عنها وحتى انتهاء البرنامج النصي من تنفيذه. فيما يتعلق بـ 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 العوامل المنطقية التالية:

  1. استبعاد منطقي (Xor) ؛
  2. المعادل المنطقي (Eqv) ؛
  3. التضمين المنطقي (عفريت).

يمكن استخدام التعبيرات المنطقية أو القيم الرقمية كمعامِلات للعوامل المنطقية. في الحالة الأولى ، ستكون النتيجة ثابتًا منطقيًا ، في الحالة الثانية - رقم. اعتمادًا على عامل التشغيل ، يمكن أن يؤدي تغذية قيمة فارغة واحدة أو قيمتين إلى الإدخال إلى نتيجة خالية. عامل التشغيل Not أحادي ويعيد النفي المنطقي للتعبير. لا ينفذ عامل التشغيل انعكاس أحادي المعامل على معامل رقمي. باقي العوامل المنطقية ثنائية. يوضح الجدول أدناه نتائج تنفيذ كل من المشغلين اعتمادًا على قيمة المعاملين Exp1 و Exp2:

إكسب 1 إكسب 2 و أو Xor مكافئ عفريت
حقيقي حقيقي حقيقي حقيقي خاطئة حقيقي حقيقي
حقيقي خاطئة خاطئة حقيقي حقيقي خاطئة خاطئة
خاطئة حقيقي خاطئة حقيقي حقيقي خاطئة حقيقي
خاطئة خاطئة خاطئة خاطئة خاطئة حقيقي حقيقي
حقيقي باطل باطل حقيقي باطل باطل باطل
خاطئة باطل خاطئة باطل باطل باطل حقيقي
باطل حقيقي باطل حقيقي باطل باطل حقيقي
باطل خاطئة خاطئة باطل باطل باطل باطل
باطل باطل باطل باطل باطل باطل باطل

في الحياة ، غالبًا ما يتم استخدام عوامل التشغيل And و Or ، وفي كثير من الأحيان أقل - Xor. لم نضطر للتعامل مع الاستخدام العملي لمشغلي Eqv و Imp. إذا كان من الصعب عليك التعامل مع الجدول أعلاه ، فإننا نلخص تأثير هذه العوامل:

  • ويكون صحيحًا فقط إذا كان كلا المعاملين صحيحًا. في أي حالة أخرى ، فهي إما خطأ أو لاغية.
  • أو يكون صحيحًا إذا كان أحد المعاملات على الأقل صحيحًا.
  • تكون Xor صحيحة إذا كانت قيم المعاملات مختلفة و False إذا كانت متطابقة.

عند تنفيذ أحادي المعامل على المعاملات الرقمية ، يتم تحديد نتيجة العامل المنطقي من الجدول التالي:

إكسب 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

مهمة تشغيل

تم وصف عامل التعيين (=) بالتفصيل في قسم "المتغيرات".

أمر المشغل

إذا احتوى التعبير على عدة عوامل تشغيل ، فسيتم تطبيقها بترتيب يسمى أسبقية عامل التشغيل. يمكنك تغيير الترتيب الافتراضي باستخدام الأقواس. يتم دائمًا تقييم التعبير الموجود بين الأقواس أولاً.

في التعبير الذي يحتوي على عوامل تشغيل من فئات مختلفة ، يتم إجراء العمليات الحسابية أولاً ، ثم عوامل المقارنة ، وأخيرًا العوامل المنطقية. جميع عوامل المقارنة لها نفس الأسبقية ويتم تقييمها من اليسار إلى اليمين. يتم تقييم العمليات الحسابية والمنطقية بالترتيب التالي:

  1. الأُس (^) ؛
  2. تغيير علامة الرقم ، أحادي ناقص (-) ؛
  3. الضرب والقسمة (/)؛
  4. تقسيم صحيح (\)؛
  5. باقي القسمة الصحيحة (Mod) ؛
  6. الجمع (+) والطرح (-) ؛
  7. دمج السلاسل (&).

إذا حدث الضرب والقسمة بنفس التعبير ، فسيتم تنفيذ العمليات بترتيب من اليسار إلى اليمين. تنطبق قاعدة مماثلة في حالة التواجد المتزامن لعمليات الجمع والطرح.

عامل تشغيل سلسلة السلسلة (&) ليس حسابيًا ويتم منحه الأولوية بين العمليات الحسابية وعوامل المقارنة.

تسلسل العمليات المنطقية كما يلي:

  1. النفي المنطقي ، الانقلاب (لا) ؛
  2. الضرب المنطقي ، والاقتران (و) ؛
  3. إضافة منطقية ، فصل (أو) ؛
  4. استبعاد منطقي (Xor) ؛
  5. المعادل المنطقي (Eqv) ؛
  6. التضمين المنطقي (عفريت).

التعبيرات الشرطية

تستخدم التعبيرات الشرطية للتحكم في ترتيب تنفيذ أوامر البرنامج وتسمح لك بتنظيم الانتقالات (الفروع) وتكرار الأوامر. عادةً ما يتم استخدام عوامل المقارنة بالاقتران مع التعبيرات الشرطية.

التعبير إذا .. ثم .. آخر

تعبير الفرع الشرطي إذا كان يسمح لك بتنفيذ مجموعة أو أخرى من الأوامر بناءً على النتيجة تعبير منطقيأو قيمة المتغير المنطقي.

لتنفيذ أمر واحد عند استيفاء شرط معين ، يتم استخدام صيغة التعبير المكون من سطر واحد:

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

يتيح لك VBScript إنشاء فئات جديدة ، والتي سنسميها فئات VB فيما يلي. بشكل عام ، فهي ليست فئات كاملة في فهم البرمجة الشيئية ، لأنها لا تدعم الوراثة ، وبالتالي تعدد الأشكال. لذلك ، من بين الحيتان الثلاثة التي يعتمد عليها النموذج الموجه للكائنات ، يبقى التغليف فقط - القدرة على دمج البيانات والأساليب داخل كيان واحد.

يتم تعريف الفصل باستخدام البناء التالي:

بيانات اسم الفئة نهاية الفئة

حيث الاسم هو اسم الفئة والبيانات عبارة عن تعريف واحد أو أكثر للمتغيرات أو الخصائص أو الإجراءات أو الوظائف ، والتي يشار إليها أيضًا باسم أعضاء الفئة. يرجى ملاحظة أنه على عكس دلفي ، حيث يحتوي كود تعريف الصنف على إجراءات ووظائف فقط ، في فئة VB ، تتم كتابة كود العضو مباشرة في نص الفصل.

يمكن إعلان أعضاء الفصل على أنهم خاصون أو عامون. الأول مرئي فقط داخل الكود الخاص بهذه الفئة ، بينما الأخير متاح لكل من الكود الداخلي والخارجي. إذا كان المتغير أو الوظيفة (الإجراء) لا يحتويان على تعريف صريح لـ "عام" أو "خاص" ، فإنه يتم اعتبارهما عامين. الإجراءات أو الوظائف المعلنة على أنها عامة داخل كتلة فئة تصبح طرقًا لهذه الفئة.

المتغيرات التي تم الإعلان عنها كعامة تصبح خصائص فئة إلى جانب الخصائص التي تم الإعلان عنها مباشرةً باستخدام بنيات الحصول على الملكية ، و Property Let ، و Property Set.

تحديد خصائص الطبقة

أعلاه ، قلنا بالفعل أن حقول الطبقة ، سواء تم الإعلان عنها صراحةً أم لا صراحةً كعامة ، تصبح خصائصها. بالإضافة إلى ذلك ، يمكنك إنشاء خاصية فئة عن طريق تحديد وظائف خاصة لقراءة قيمة الخاصية (الحصول على الخاصية) ، وكذلك لتخصيصها (Property Let أو Property Set).

بناء الجملة لتعريف هذه الوظائف هو كما يلي:

| خاص] الحصول على اسم خاصية [(arglist)] [name = تعبير] [name = تعبير] خاصية إنهاء اسم (قيمة) اسم مجموعة خاصية نهاية ملكية (مرجع) خاصية النهاية

من خلال تحديد وظيفة واحدة فقط ، قراءة أو تعيين ، يمكنك إنشاء خاصية للقراءة فقط أو خاصية الكتابة فقط ، على التوالي. يتم استخدام إجراء Property Let لتعيين أنواع بيانات بسيطة ، ويتم استخدام إجراء مجموعة الخصائص لتمرير مرجع كائن. لاحظ أن جميع الوظائف الثلاثة يمكن أن تقبل قائمة معلمات عشوائية كمدخلات. هذه هي الطريقة التي يمكنك بها تنظيم خصائص المصفوفة ، على سبيل المثال ، عن طريق تمرير مؤشر العنصر كوسيطة.

إنشاء وإتلاف مثيل لفئة VB

يتم إنشاء مثيل لفئة 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، والتي سيتم مناقشتها في الدروس القادمة.

دالة MsgBox

الوظيفة الأكثر شيوعًا لعرض الرسالة. بالطبع هو أصعب من صدى الكائن WScript، لكنها لا تحتاج إلى شيء أيضًا.
بناء الجملة: MsgBox (موجه [، أزرار] [، العنوان] [، ملف التعليمات ، السياق])

  • مستعجل- رسالة نصية.
  • أزرار- أزرار الإخراج ووضع النافذة.
  • عنوان- اسم النافذة.
  • ملف المساعدة- ملف المساعدة (* .hlp)
  • مفهوم- رقم قسم المساعدة.

معامل أزراريمكن أن تأخذ عدة قيم في نفس الوقت. للإشارة إليها ، استخدم علامة "+" أو ببساطة استخدم مجموع القيم. قيم هذه المعلمة موضحة أدناه.

ثوابت مربع الحوار (أزرار الإخراج):

  • vbOKOKOnly- القيمة 0. اعرض الزر "موافق".
  • vbOK إلغاء- القيمة 1. أزرار العرض: موافق وإلغاء.
  • vbAbortRetryIgnore- القيمة 2. أزرار العرض: إحباط ، كرر وتخطي.
  • vb نعملا إلغاء- القيمة 3. إظهار الأزرار: نعم ، لا وإلغاء.
  • vb نعم- القيمة 4. أزرار العرض: نعم ولا.
  • vbRetryCancel- القيمة 5. أزرار العرض: إعادة وإلغاء.

ثوابت مربع الحوار (رموز قابلة للعرض):

  • vbCritical- القيمة 16. اعرض أيقونة علامة الإيقاف.
  • vbQuestion- القيمة 32. اعرض أيقونة علامة الاستفهام.
  • تعقيب- القيمة 48. اعرض أيقونة علامة التعجب.
  • معلومات- القيمة 64. اعرض أيقونة علامة المعلومات.

ثوابت مربع الحوار (الأزرار الافتراضية):

  • vbDefaultButton1- القيمة 0. يتم تحديد الزر الأول افتراضيًا.
  • vbDefaultButton2- القيمة 256. يتم تحديد الزر الثاني افتراضيًا.
  • vbDefaultButton3- القيمة 512. يتم تحديد الزر الثالث افتراضيًا.
  • vbDefaultButton4- القيمة 768. يتم تحديد الزر الرابع افتراضيًا.

ثوابت مربع الحوار (وضع النافذة):

  • vbApplicationModal- القيمة 0. معروضة في الوضع الشرطي.
  • vbSystemModal- القيمة 4096. يتم عرضها في الوضع النمطي ويتم وضعها فوق جميع التطبيقات.

آخر:

  • القيمة 262144- فوق كل النوافذ.
  • القيمة 524288- يتم عرض النص في النافذة على الحافة اليمنى.

وتجدر الإشارة إلى أن المعلمة أزرارلا يمكن قبول قيم متعددة من نفس الفئة. هذه القيم سوف تضيف ببساطة. أي أنك لن تتمكن من تثبيت عدة مجموعات من الأزرار أو الرموز في نفس الوقت.

"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 إرجاع نتيجة الضغط على الأزرار. يمكن تخصيصه لمتغير وبهذه الطريقة تحديد الزر المضغوط.

النتيجة المعادة للأزرار المضغوطة (الثوابت):

  • vbOK- القيمة 1. زر موافق.
  • vbCancel- القيمة 2. زر إلغاء.
  • vbAbort- القيمة 3. إحباط الزر.
  • vbRetry- القيمة 4. زر تكرار.
  • vb تجاهل- القيمة 5. زر تخطي.
  • vb نعم- القيمة 6. زر نعم.
  • vb- القيمة 7. رقم الزر

"************************************************** * ****** "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 "بصرك سيء! لا يوجد مثل هذا السلك! القنبلة انفجرت !!! "انتهى إذا

"********************************************************

استمرار

برنامج Visual Basic

لماذا تحتاج البرامج النصية VBS

يعد برنامج VBS النصي حلاً فعالاً لأتمتة إجراءات المستخدم على أنظمة Windows. يستخدم هذا النوع من البرمجة النصية بشكل شائع في:

  • إنشاء سيناريوهات معقدة.
  • استخدام كائنات من تطبيقات ومكتبات أخرى ؛
  • إخفاء النوافذ أثناء تنفيذ البرنامج النصي ؛
  • تشفير منطق البرنامج النصي.

بشكل أساسي ، تُستخدم البرامج النصية لـ VBS لمعالجة البيانات وإدارة النظام والعمل مع حسابات المستخدم والكمبيوتر والتفاعل معها تطبيقات المكاتب، والعمل مع قواعد البيانات والمهام المعقدة الأخرى.

أحكام أساسية

اعتمادًا على لغة البرنامج النصي والمحتوى والتشفير ، توجد أنواع البرامج النصية التالية:

  • vbs - البصرية الأساسيةالنصي
  • vbe - سيناريو Visual Basic المشفر
  • شبيبة - جافا سكريبت
  • jse - تشفير جافا سكريبت
  • wsh - إعدادات البرنامج النصي
  • wsf - برنامج نصي متكامل مع XML

في هذه المقالة ، سأبحث في نصوص مثل 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:

  • طول الخط غير محدود ؛
  • لم يتم النظر في القضية ؛
  • لا يتم حساب عدد المسافات بين المعلمات ؛
  • يمكن كسر سطر الأوامر ، ويجب إدخال الرمز "_" في مكان الفاصل ؛
  • الحد الأقصى لطول اسم المتغير 255 حرفًا ؛
  • تتم الإشارة إلى التعليقات برمز "" ".

"=== رأس معلومات البرنامج النصي ===" اسم البرنامج النصي: "اسم البرنامج النصي ؛" التاريخ: "تاريخ التعديل ؛" المؤلف: "المؤلف ؛" الوصف: "الوصف ؛" === كتلة التهيئة === توجيه الخيار الصريح " النهي الخلق التلقائي"المتغيرات ؛ خافت "إعلان متغير ؛ خافت () "إعلان المصفوفات ؛ تعيين "ارتباط الكائن ؛" === المنطق الرئيسي للبرنامج النصي === "نص البرنامج النصي ؛" === الدالات والإجراءات === "الإجراءات والوظائف ؛

المتغيرات

بشكل افتراضي ، يتم الإعلان عن المتغيرات في البرامج النصية تلقائيًا عند استخدامها لأول مرة في نص البرنامج النصي ، ما لم يكن ذلك ممنوعًا بواسطة التوجيه Option Explicit. إذا قمت بتعريف الأمر Option Explicit في بداية البرنامج النصي ، فيجب تحديد جميع المتغيرات مسبقًا باستخدام التركيبات التالية:

خافت "متغير متاح لجميع الإجراءات الفرعية ؛ عام "متغير متاح لجميع الإجراءات الفرعية ؛ خاص "متغير يمكن الوصول إليه فقط من خلال البرنامج الحالي والروتينات الفرعية الخاصة به ؛

يتم الإعلان عن الثوابت في بداية البرنامج النصي باستخدام البناء:

مقدار ثابت = "ثابت متاح لجميع الروتينات الفرعية ؛ Public Const = "ثابت متاح لجميع الروتينات الفرعية ؛ Private Const = "ثابت يمكن الوصول إليه فقط من خلال البرنامج الحالي" والروتينات الفرعية الخاصة به.

يتم تعيين نوع المتغير تلقائيًا بعد إدخال القيمة الأولى فيه. توجد أنواع البيانات التالية في Visual Basic:

  • فارغ - متغير غير مهيأ ؛
  • متغير فارغ
  • منطقي - نوع منطقي ، القيم المحتملة: خطأ ، صحيح أو 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 و 31.01.9999 ؛
  • سلسلة - سلسلة متغيرة ، سعة تصل إلى 2 مليار حرف ؛
  • كائن - مؤشر إلى كائن ؛
  • خطأ - رمز الخطأ.

يمكن التحقق من توافق البيانات مع الأنواع ، وكذلك ترجمتها من نوع إلى آخر ، إذا كانت القيم تسمح بذلك. للعمليات على أنواع البيانات ، يتم استخدام الأوامر التالية:

VarType ( ) "يُرجع رقم نوع المتغير ؛ TypeName ( ) "يُرجع اسم نوع المتغير ؛ IsArray ( ) "التحقق من أن المتغير عبارة عن مصفوفة ؛ IsDate ( ) "التحقق من أن المتغير هو تاريخ ؛ فارغ ( ) "التحقق من أن المتغير غير مهيأ ؛ IsNull ( ) "التحقق من أن المتغير فارغ ؛ IsNumeric ( ) "التحقق من أن المتغير رقم ؛ IsObject ( ) "التحقق من أن المتغير هو كائن ؛ CCur ( ) "التحويل إلى نوع العملة ؛ CBool ​​( ) "تحويل متغير إلى نوع منطقي ؛ CByte ( ) "تحويل المتغير إلى نوع بايت ؛ CDate ( ) "تحويل متغير إلى نوع التاريخ ؛ CDbl ( ) "تحويل المتغير إلى نوع مزدوج ؛ CInt ( ) "تحويل المتغير إلى نوع صحيح ؛ CLng ( ) "تحويل المتغير إلى نوع طويل ؛ CSng ( ) "تحويل متغير إلى نوع مفرد ؛ CStr ( ) "تحويل متغير إلى نوع السلسلة.

كما ذكر أعلاه ، لا يفرض Visual Basic قيودًا صارمة على أسماء المتغيرات ، ولكن في نفس الوقت ، توجد إرشادات لأسماء المتغيرات بحيث يسهل تحديد نوع البيانات في نص البرنامج النصي. للقيام بذلك ، يوصى بوضع الرموز الشرطية أمام اسم المتغير الذي يحدد نوع المتغير:

  • iValueName - أنواع رقمية
  • sValueName هو نوع سلسلة
  • bValueName - نوع منطقي
  • dValueName - التاريخ
  • oValueName - كائن
  • cValueName - ثابت
  • aArrayName - مصفوفة

يمكن استخدام المصفوفات المتغيرة في البرامج النصية 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 ( , , ) "يُرجع الفرق بين التواريخ ؛ اسم الشهر ( ) "إرجاع اسم الشهر ؛ WeekDayName ( , , ) "إرجاع اسم يوم الأسبوع ؛ اليوم ( ) "إرجاع اليوم من التاريخ المحدد ؛ الشهر ( ) "إرجاع الشهر من التاريخ المحدد ؛ السنة ( ) "إرجاع السنة من التاريخ المحدد ؛ ساعة ( ) "إرجاع الساعة من التاريخ المحدد ؛ دقيقة ( ) "إرجاع الدقيقة من التاريخ المحدد ؛ ثانيًا ( ) "إرجاع الثاني من التاريخ المحدد.

وظائف معالجة السلاسل:

تصاعدي ( ) "إرجاع رمز أحرف ANSI ؛ Chr ( ) "إرجاع الحرف بواسطة رمز ANSI ؛ InStr ( , ) "إرجاع موضع السلسلة الفرعية في" السلسلة المحددة ؛ InStrRev ( , ) "إرجاع موضع السلسلة الفرعية في السلسلة المحددة" ، بدءًا من نهاية السلسلة ؛ انضم ( , ) "تحويل المصفوفة إلى سلسلة ؛ Len ( ) "إرجاع طول السلسلة ؛ LCase ( ) "تحويل سلسلة إلى سلسلة من الأحرف الصغيرة" ؛ UCase ( ) "تحويل سلسلة إلى سلسلة من أحرف كبيرة" ؛ اليسار ( , ) "إرجاع العدد المحدد من الأحرف من" بداية السطر ؛ حق ( , ) "إرجاع العدد المحدد من الأحرف من" نهاية السطر ؛ منتصف ( , , ) "إرجاع عدد الأحرف المحدد من" رقم حرف السلسلة المحدد ؛ يحل محل ( , , [، Params]) "استبدال السلسلة الفرعية في السلسلة المحددة ؛ مسافة ( ) "سطور من العدد المحدد للمسافات ؛ انقسام ( , [، Params]) "تحويل سلسلة إلى مصفوفة ؛ سلسلة ( , ) "سلسلة من الرقم المحدد" بأحرف معينة ؛ SrtReverse ( ) "انعكاس الخط ؛ تقليم ( ) "قطع المسافات إلى يسار ويمين السلسلة ؛ LTrim ( ) "قطع المسافات على يسار الخط ؛ RTrim ( ) "قطع المساحات على يمين الخط.

الدوال الرياضية:

Randomize "يهيئ آلية الأرقام العشوائية (لا يُرجع شيئًا) ؛ Rnd" يُرجع قيمة عشوائية غير عدد صحيح بين 0 و 1 ؛ Atn ( ) "حساب قوس ظل رقم ؛ كوس ( ) "حساب جيب التمام لرقم ؛ الخطيئة ( ) "حساب جيب الرقم ؛ Exp ( ) "حساب اللوغاريتم الطبيعي لرقم ؛ السجل ( ) "حساب اللوغاريتم العشري لرقم ؛ Sqr ( ) "حساب الجذر التربيعي لرقم ؛ عبس ( ) "حساب القيمة المطلقة لرقم ؛ Hex ( ) "تحسب القيمة السداسية العشرية لرقم ؛ Int ( ) "تقريب الرقم ؛ إصلاح ( ) "حساب الجزء الصحيح من الرقم.

وبالطبع ، بالإضافة إلى الوظائف المذكورة ، تدعم السكربتات أبسط العمليات الحسابية والمنطقية:

  • = - عامل التخصيص ؛
  • + - مجموع رقمين ؛
  • - - طرح رقمين ؛
  • * - ضرب رقمين.
  • / - قسمة رقمين ؛
  • \ - قسمة عدد صحيح من رقمين ؛
  • Mod هو باقي قسمة رقمين ؛
  • ^ - الأس.
  • & - سلسلة من سلسلتين ؛
  • هو - مقارنة بين شيئين.
  • Eqv - مقارنة بين تعبيرين ؛
  • لا - عملية النفي المنطقي ؛
  • و - عملية الاقتران المنطقية ؛
  • أو - عملية الفصل المنطقي ؛
  • Xor - عملية الاستبعاد المنطقي ؛
  • Imp هي عملية ضمنية منطقية.

يتم تحديد ترتيب تنفيذ العمليات كما هو الحال في جميع لغات البرمجة: أولاً ، يتم تنفيذ العمليات بين الأقواس ، ثم يتم حساب الوظائف ، ثم عمليات الضرب والقسمة ، متبوعة بالجمع والطرح ، وتكمل العمليات المنطقية الحساب.

وظائف مخصصة

تتيح لك النصوص المكتوبة في Visual Basic تحديد الإجراءات والوظائف المخصصة واستدعائها من البرنامج الرئيسي. لا يوجد فرق عمليًا بين الإجراء والوظيفة ، ويكمن الاختلاف في المعنى المنطقي لهذه الإجراءات الفرعية: تُستخدم الدوال عادةً لحساب بعض القيمة ، وتُستخدم الإجراءات لأداء الإجراءات. ومع ذلك ، يمكن لكل من الإجراءات والوظائف تنفيذ العمليات وتمرير القيم إلى البرنامج الرئيسي. على الرغم من ذلك ، يجب ألا تنسى الغرض من هذه الإجراءات الفرعية: الوظائف - للحسابات ، والإجراءات - للإجراءات.

يتم الإعلان عن الوظيفة بواسطة عامل تشغيل الوظيفة ، متبوعًا باسم الوظيفة المعرفة بواسطة المستخدم ، والتي يجب ألا تتطابق مع أي كلمة محجوزة للغة Visual Basic ، ثم يتم الإشارة إلى المتغيرات التي سيتم تمريرها إلى الروتين الفرعي كمعلمات - تحديد المتغيرات في هذا البناء تعني تخصيص خلايا ذاكرة لمتغيرات الروتين الفرعي (متغيرات التصريح عن الوظيفة). في نص الروتين الفرعي ، لا تختلف بنية البرنامج النصي عن البرنامج العادي (هنا يمكنك إعلان متغيرات إضافية ، وإجراء عمليات ، واستخدام وظائف وإجراءات أخرى) ، في نهاية النص يجب أن يكون هناك عامل للتعيين دالة لبعض القيمة - سيتم إرجاع هذه القيمة إلى البرنامج الرئيسي. يمكنك مقاطعة تنفيذ إحدى الوظائف باستخدام عبارة Exit Function ، ولكن في هذه الحالة يجب أن تتذكر تعيين قيمة للدالة ، وإلا فإن النص البرمجي سينشئ خطأ. تنتهي الوظيفة بعبارة End Function.

تعريف الوظيفة

وظيفة () لو ثم = إنهاء وظيفة إنهاء إذا = وظيفة النهاية

استدعاء وظيفة

= ()

يتم تعريف الإجراء بشكل مشابه للدالة ، ولكن مع عامل فرعي مختلف. نظرًا لأن الإجراء لا يعيد أي قيم إلى البرنامج الرئيسي ، فلا يوجد بيان تخصيص قبل الخروج من الإجراء. يمكن مقاطعة تنفيذ الإجراء باستخدام الأمر Exit Sub ، ويكتمل الهيكل بأكمله باستخدام جملة End Sub. لاستدعاء إجراء في البرنامج الرئيسي ، يجب عليك استخدام الكلمة الأساسية Call واسم الوظيفة مع الوسائط المطلوبة. (الكلمة الأساسية الاتصال اختيارية ، لكني أوصي باستخدامها لتجنب استدعاءات الإجراءات غير الصحيحة.)

تحديد الإجراء

الفرعية () لو ثم خروج Sub End إذا End Sub

استدعاء الإجراء

()

بالمناسبة ، يجب وضع الإجراءات والوظائف في نهاية البرنامج النصي.

أثناء تشغيل الروتين الفرعي ، لا تتغير قيم المتغيرات في الجزء الرئيسي من البرنامج النصي ، حتى إذا كان الروتين الفرعي يحتوي على متغيرات من نفس الاسم. لكي يتمكن الروتين الفرعي من تغيير قيم متغيرات البرنامج النصي الرئيسي ، من الضروري تعيين خاصية المتغير كـ ByRef في وسيطات الروتين الفرعي. بشكل افتراضي ، يتم تحديد جميع المتغيرات باستخدام خاصية ByVal.

الفرعية (ByRef [، الحجج]) = End Sub

في هذه الحالة ، الحجة يتم تمريرها بالرجوع إلى خلية ذاكرة - تتغير قيمة المتغير في النص الرئيسي. بمعنى آخر ، تقوم معلمة ByRef بتحويل الإجراء إلى دالة - يقوم الروتين الفرعي بإرجاع نتيجة الحسابات إلى البرنامج الرئيسي.

معالجة أخطاء تنفيذ البرنامج النصي

بشكل افتراضي ، يتم معالجة جميع الأخطاء بواسطة البرنامج النصي في الوضع التلقائي ، وفي حالة حدوث خطأ ، يتوقف البرنامج النصي. لتعطيل المعالجة التلقائية للأخطاء ، تحتاج إلى استخدام توجيه خاص 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 ، هي لغة برمجة موجهة للكائنات ، أي أن المفهوم الرئيسي هو مفهوم الكائنات والفئات

الفئة هي نوع يصف كيفية بناء الكائنات. الكائن يعني شيئًا له سلوك معين وطريقة عرض ، والكائن هو مثيل لفئة. يمكن مقارنة فئة بالرسم وفقًا للكائنات التي يتم إنشاؤها. عادةً ما يتم تصميم الفئات بحيث تتوافق كائناتها مع الكائنات الموجودة في المجال.

لذلك ، للعمل مع كائن ، يجب عليك أولاً إنشاؤه باستخدام فئات من المكتبة المطلوبة:

يضع = CreateObject ( .)

يمكنك حذف كائن عن طريق تعيينه على "لا شيء":

يضع = لا شيء

كل الكائنات التي يعمل معها Windows Script Host لها أساليب وخصائص. للإشارة إلى طريقة ، يجب عليك تحديد كائن ، ومن خلال نقطة - طريقة مع المعلمات المطلوبة.

. [، Param2، ...، ParamN] اتصال .([، Param2، ...، ParamN])

يتشابه الموقف مع الخصائص ، ولكن يمكن تخصيص الخصائص وقراءتها في متغيرات وخصائص أخرى ، ومع ذلك ، يجب أن تأخذ في الاعتبار نوع بيانات المتغيرات والخصائص ، وإلا فإن البرنامج النصي سينشئ خطأ في عدم توافق نوع البيانات.

. = . = . = .

مثال. إنشاء كائن نظام الملفات ، واستدعاء طريقة إنشاء المجلد ، وحذف الكائن.

تعيين oFSO = CreateObject ("Scripting.FileSystemObject") استدعاء oFSO.CreateFolder ("C: \ Test") تعيين oFSO = لا شيء

لاحظ أن "الكائن" يشير إلى منطق البرنامج النصي ، وليس منطق نظام الملفات. أي عندما نقول "حذف كائن" ، فإننا نعني كائن نص منطقي لا يؤثر بأي شكل من الأشكال على حذف بعض أجزاء نظام الملفات.

لمعرفة المكتبات الموجودة في نظام التشغيل الخاص بك ، والفئات المضمنة في المكتبات ، وطرقها وخصائصها ، يمكنك استخدام مستكشف الكائنات ، على سبيل المثال ، من Microsoft Word:

  1. قم بتشغيل برنامج MS Word.
  2. في القائمة الرئيسية ، حدد أدوات -> ماكرو -> محرر Visual Bacis
  3. في نافذة تحرير الماكرو ، حدد عرض -> مستعرض الكائنات

إذا لم تظهر بعض المكتبات في القائمة ، فيمكن توصيلها عبر قائمة الأدوات -> المراجع.

توجد عمليات في البرامج النصية غير مضمنة في أي فئة ، وهي متوفرة مباشرة في نص البرنامج النصي:

MsgBox ( [، Params]) "عرض رسالة نافذة على الشاشة ؛ InputBox ( [، Params]) "يعرض مربع حوار على الشاشة.

مثال على عرض مربع حوار مع طلب نص ، ثم عرض رسالة نافذة مع النص المدخل.

MyValue = InputBox ("أدخل نصًا" ، "النافذة الأولى" ، "يجب إدخال النص هنا") MyResult = MsgBox (MyValue، 1، "النافذة الثانية")

طرق وخصائص فئة الجذر WScript

لا تتطلب أساليب وخصائص فئة WScript الجذر إنشاء كائن - فهي متاحة تلقائيًا للاستخدام مباشرة في نص البرنامج النصي.

إنشاء كائن ( .) "إنشاء كائن ؛ GetObject ( ) "توصيل كائن من ملف ؛ ConnectObject ( , ) "الاتصال بأحداث كائن موجود ؛ DisconnectObject ( ) "قطع الاتصال بأحداث الكائن ؛ Echo ()" عرض رسالة على الشاشة ؛ الوسيطات "تعيد مجموعة من وسائط سطر أوامر البرنامج النصي ؛ الاسم" ترجع اسم مترجم البرنامج النصي ؛ المسار "يعيد المسار إلى مترجم البرنامج النصي ؛ FullName" يعيد الاسم الكامل لمترجم البرنامج النصي ؛ الإصدار "يُرجع إصدار مترجم البرنامج النصي ؛ ويعيد BuildVersion" إصدار مجموعة مترجم البرنامج النصي ؛ ScriptName "إرجاع اسم ملف البرنامج النصي ؛ ScriptFullName" إرجاع الاسم الكامل لملف البرنامج النصي ؛ تفاعلي "اضبط أو أعد وضع تفاعل البرنامج النصي ؛ السكون ( ) "وقفة لعدد محدد من المللي ثانية ؛ إنهاء" إنهاء البرنامج النصي.

سنقوم بتحليل تطبيق هذه الأساليب والخصائص بمزيد من التفصيل في أمثلة الفئات الأخرى.

طرق وخصائص فئة شل

للعمل مع نظام التشغيل ، يتم استخدام فئة خاصة من Shell ، والتي تتيح لك إجراء عمليات مثل تشغيل البرامج ، وتعديل السجل ، وإنشاء الاختصارات ، والوصول إلى مجلدات النظام ومتغيرات النظام ، والوصول إلى سجل النظام. إذن ، طرق وخصائص فئة شل:

توسيعالبيئةالربيع ( ) "إرجاع قيمة متغير النظام المطلوب ؛ EnviEnvironment ( ) "إرجاع مجموعة من متغيرات النظام ؛ CreateShortcut ( ) "إنشاء اختصار ؛ نافذة منبثقة ( [، Params]) "عرض رسالة نافذة على الشاشة ؛ إعادة قراءة ( ) "قراءة قيمة من التسجيل ؛ RegWrite ( ,[، اكتب]) "اكتب القيمة في التسجيل ؛ RegDelete ( ) "حذف قيمة من التسجيل ؛ LogEvent ( ,) "كتابة حدث في سجل النظام ؛ تشغيل ( [، Params]) "ابدأ البرنامج في عملية جديدة ؛ Exec ( ) "قم بتشغيل البرنامج في وحدة التحكم التابعة ؛ AppActivate ( ) "تنشيط النافذة ؛ SendKeys ( <Keys>) "إرسال الأحرف إلى النافذة النشطة ؛ CurrentDirectory" إعداد أو إعادة الدليل الحالي ؛ SpecialFolders () "إرجاع مجموعة من مجلدات الخدمة أو المسار" لمجلد الخدمة المطلوب.</p><p>مثال. استخدام طرق وخصائص فئة شل.</p><p>"إنشاء كائن من فئة 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 <a href="https://svd-komi.ru/ar/free-key/vosstanovlenie-polzovatelskoi-papki-zagruzki-v-windows-7-po-kakoi-prichine/">مجلد Windows</a>وعرض رسالة على الشاشة 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، "اكتمل اختبار البرنامج النصي")</p><h3>طرق وخصائص فئة الشبكة</h3> <p>كما رأينا بالفعل ، يمكن أن تعمل نصوص VBS مع ملفات <a href="https://svd-komi.ru/ar/technical-preview/a-removable-hard-drive-is-divided-into-volumes-can-i-split-an-external-hard-drive-into-the-same-partitions-c-d-e-as-the-hard-drive/">ويندوز شل</a>لكن هذا ليس احتمالهم الوحيد. باستخدام فئة الشبكة ، يمكنك الوصول إلى كائنات الشبكة وإدارتها. دعنا نلقي نظرة فاحصة على فئة الشبكات:</p><p>ComputerName "إرجاع اسم الكمبيوتر ؛ UserDomain" إرجاع اسم المجال ؛ اسم المستخدم "إرجاع اسم المستخدم ؛ EnumNetworkDrives" إرجاع قائمة محركات أقراص الشبكة المعينة ؛ شبكة خريطة القيادة ( <LocalName>, <RemoteName>،) "قم بتوصيل مورد شبكة ؛ RemoveNetworkDrive ( <Name>،،) "فصل مورد الشبكة ؛ EnumPrinterConnections" إرجاع قائمة طابعات الشبكة ؛ AddWindowsPrinterConnection ( <PrinterPath>) "الإتصال <a href="https://svd-komi.ru/ar/to-install-on-your-computer/kak-pechatat-dokumenty-s-iphone-i-ipad-kak-raspechatat-pryamo-s-iphone-ili-ipad-pri/">طابعة الشبكة</a>؛ AddPrinterConnection ( <LocalName>, <RemoteName>[، UpdateProfile ، User ، Password] "قم بتوصيل طابعة شبكة بالمنفذ المحدد ؛ RemovePrinterConnection ( <Name>[، Force ، UpdateProfile]) "تعطيل طابعة الشبكة ؛ SetDefaultPrinter ( <PrinterName>) "حدد الطابعة الافتراضية ؛</p><p>مثال. استخدام طرق وخصائص فئة الشبكة.</p><p>"إنشاء كائن من فئة 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</p><h3>خصائص وأساليب فئة FileSystemObject</h3> <p>غالبًا ما توجد في السيناريوهات حالات يكون فيها من الضروري إنشاء شيء ما أو حذفه أو نقله أو تغييره على قرص الكمبيوتر. يمكن حل هذه المهمة عن طريق فئة FileSystemObject ، المصممة للعمل معها <a href="https://svd-komi.ru/ar/technical-preview/informatics-of-what-kinds-are-viruses-summary-viruses/">نظام الملفات</a>... فيما يلي الكائنات التي يمكن أن ينشئها هذا الفصل:</p> <ul><li>FileSystemObject - الكائن الرئيسي الذي يسمح لك بإنشاء وحذف وإدارة الأقراص والمجلدات والملفات بشكل عام ؛</li> <li>محرك - كائن يسمح لك بجمع معلومات حول أقراص النظام ؛</li> <li>محركات الأقراص - كائن يخزن قائمة بأقراص النظام ؛</li> <li>Folder - كائن يسمح لك بإنشاء المجلدات وحذفها ونقلها ، فضلاً عن جمع معلومات عنها ومحتوياتها ؛</li> <li>المجلدات - كائن يخزن قائمة بالمجلدات الفرعية للمجلد المحدد ؛</li> <li>ملف - كائن يسمح لك بإنشاء الملفات وحذفها ونقلها ، فضلاً عن جمع معلومات عنها ؛</li> <li>الملفات - كائن يخزن قائمة الملفات في المجلد المحدد ؛</li> <li>TextStream هو كائن يسمح لك بقراءة وإنشاء ملفات نصية.</li> </ul><p>طرق وخصائص فئة FileSystemObject (الكائن الرئيسي):</p><p>مسار بناء ( <Path>, <Name>) "يضيف اسمًا إلى المسار المحدد ؛ GetAbsolutePathName ( <PathSpec>) "إرجاع المسار الكامل ؛ GetBaseName ( <Path>) "يسترجع اسم المجلد أو الملف (بدون" الامتداد ") في المسار المحدد ؛ GetDrive ( <DriveSpec>) "ينشئ كائن Drive ؛ GetDriveName ( <Path>) "إرجاع اسم محرك الأقراص في المسار المحدد ؛ GetExtensionName ( <Path>) "إرجاع امتداد الملف في" المسار المحدد ؛ خذ الملف ( <FileSpec>) "ينشئ كائن ملف ؛ GetFileName ( <PathSpec>) "إرجاع اسم الملف (بدون امتداد)" في المسار المحدد ؛ GetFolder ( <FolderSpec>) "ينشئ كائن مجلد ؛ GetParentFolderName ( <Path>) "يسترجع اسم المجلد الذي يوجد فيه" الملف أو المجلد في المسار المحدد ؛ GetSpecialFolder ( <FolderSpec>) "ينشئ كائن مجلد إلى مجلد الخدمة" المحدد ؛ GetTempName "إرجاع اسم ملف تم إنشاؤه عشوائيًا"؛ DriveExists ( <DriveSpec>) "يتحقق من وجود القرص ؛ FolderExists ( <FileSpec>) "يتحقق من وجود المجلد ؛ CopyFolder ( <Source>, <Destination>[، Overwrite]) "نسخ المجلد ؛ MoveFolder ( <Source>, <Destination>) "ينقل المجلد ؛ DeleteFolder ( <FolderSpec>[، فرض]) "يحذف المجلد ؛ CreateFolder ( <FolderName>) "ينشئ مجلدًا ؛ FileExists ( <Filespec>) "يتحقق من وجود ملف ؛ CopyFile ( <Source>, <Destination>[، Overwrite]) "ينسخ الملف ؛ MoveFile ( <Source>, <Destination>) "ينقل الملف ؛ DeleteFile ( <FileSpec>[، فرض]) "يحذف الملف ؛ CreateTextFile ( <FileName>[، الكتابة فوق ، UnioCode]) "ينشئ ملفًا نصيًا ؛ OpenTextFile ( <FileName>[، IOMode ، إنشاء ، تنسيق]) "يفتح ملفًا نصيًا للقراءة أو" الكتابة.</p><p>تقوم كائنات محركات الأقراص والمجلدات والملفات الخاصة بفئة FileSystemObject بتخزين معلومات حول الأقراص والمجلدات والملفات وتستخدم بشكل أساسي لجمع المعلومات حول نظام الملفات. لديهم خاصيتين فقط:</p><p>إرجاع "Count" عدد العناصر في المجموعة ؛ العنصر ( <ObjectName>) "بإرجاع السجل في الفهرس المحدد من المجموعة (غير مستخدم) ،" يتم استخدام For كل حلقة للتكرار على العناصر الموجودة في المجموعة.</p><p>لتوضيح ماهية مجموعة الكائنات ، ضع في اعتبارك مثالاً لعرض قائمة بالملفات في جذر محرك الأقراص C:</p><p>"إنشاء كائن من فئة 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)</p><p>يوفر كائن Drive الوصول إلى خصائص محرك أقراص محلي أو محرك أقراص الشبكة:</p><p>AvailableSpace "إرجاع مقدار مساحة القرص الحرة المتوفرة للمستخدم ؛ DriveLetter" إرجاع حرف محرك الأقراص ؛ DriveType "يُرجع نوع محرك الأقراص ؛ FileSystem" يُرجع نوع نظام الملفات لمحرك الأقراص ؛ FreeSpace "إرجاع مقدار مساحة القرص الحرة ؛ IsReady" إرجاع مساحة القرص المتوفرة؛ يقوم المسار "بإرجاع المسار إلى محرك الأقراص ؛ يقوم RootFolder" بإنشاء كائن مجلد يشير إلى جذر محرك الأقراص ؛ إرجاع SerialNumber " <a href="https://svd-komi.ru/ar/technical-preview/how-to-change-the-serial-number-of-windows-xp-how-to-change-serial-number-of-hard-drivesss/">رقم سري</a>القرص. ShareName "إرجاع اسم شبكة محرك الأقراص ؛ TotalSize" إرجاع سعة محرك الأقراص بالبايت؛ يقوم VolumeName بإرجاع أو تعيين تسمية القرص.</p><p>يوفر كائن المجلد إمكانية الوصول إلى جميع خصائص المجلد ، ويسمح لك أيضًا بتنفيذ الإجراءات عليه:</p><p>السمات "إرجاع سمات المجلد ؛ DateCreated" إرجاع تاريخ إنشاء المجلد ؛ DateLastAccessed "يُرجع تاريخ آخر وصول إلى المجلد ؛ ويعيد DateLastModified" تاريخ تعديل المجلد ؛ محرك الأقراص "إرجاع حرف محرك الأقراص حيث يوجد المجلد ؛ الملفات" إرجاع مجموعة الملفات في المجلد ؛ IsRootFolder "إرجاع True إذا كان المجلد هو جذر محرك الأقراص ؛ الاسم" بإرجاع اسم المجلد ؛ يقوم ParentFolder بإنشاء كائن مجلد يشير إلى "المجلد الأصل؛ المسار "إرجاع المسار إلى المجلد ؛ ShortName" إرجاع اسم المجلد بتنسيق 8.3 ؛ ShortPath "إرجاع المسار إلى المجلد بتنسيق 8.3 ؛ الحجم" إرجاع حجم المجلد ؛ SubFolders "إرجاع مجموعة من المجلدات الفرعية ؛ النوع" إرجاع نوع المجلد ؛ ينسخ ( <Destination>[، الكتابة فوق]) "نسخ المجلد ؛ نقل ( <Destination>) "ينقل المجلد ؛ حذف ( <Force>) "يحذف المجلد ؛ CreateTextFile ( <FileName>[، الكتابة فوق ، UniCode]) "ينشئ ملفًا نصيًا في المجلد.</p><p>يشبه كائن File كائن Folder - فهو يوفر الوصول إلى جميع خصائص الملف ، ويسمح لك أيضًا بتنفيذ إجراءات عليه:</p><p>السمات "إرجاع سمات الملف ؛ DateCreated" إرجاع تاريخ إنشاء الملف ؛ يُرجع DateLastAccessed "تاريخ آخر وصول إلى الملف ؛ يعرض DateLastModified" تاريخ تعديل الملف ؛ محرك الأقراص "إرجاع حرف محرك الأقراص حيث يوجد الملف ؛ الاسم" إرجاع اسم الملف ؛ يقوم ParentFolder بإنشاء كائن مجلد يشير إلى "المجلد الأصل؛ إرجاع المسار "المسار إلى الملف ؛ ShortName" بإرجاع اسم الملف بتنسيق 8.3 ؛ ShortPath "إرجاع المسار إلى الملف بتنسيق 8.3 ؛ الحجم" إرجاع حجم الملف ؛ اكتب "إرجاع نوع الملف ؛ نسخ ( <Destination>[، الكتابة فوق]) "نسخ الملف ؛ نقل ( <Destination>) "ينقل الملف ؛ حذف ( <Force>) "يحذف الملف ؛ OpenAsTextStream ()" يفتح ملفًا نصيًا للقراءة أو الكتابة.</p><p>كائن TextStream هو أداة للوصول إلى محتويات الملف. باستخدامه ، يمكنك قراءة الملف وتعديله:</p><p>AtEndOfLine "يشير إلى ما إذا تم الوصول إلى نهاية السطر ؛ AtEndOfStream" يشير إلى ما إذا تم الوصول إلى نهاية السطر ؛ العمود "يُرجع رقم العمود الذي يوجد به مؤشر القراءة ؛ السطر" يُرجع رقم السطر الذي يوجد به مؤشر القراءة ؛ إغلاق "يغلق الملف - يحرره لعمليات أخرى ؛ اقرأ ( <CharactersNumber>) "يقرأ العدد المحدد من الأحرف ، بدءًا من موضع" مؤشر القراءة ؛ ReadAll "يقرأ الملف بأكمله ؛ ReadLine" يقرأ السطر حيث يوجد مؤشر القراءة ؛ يتخطى ( <CharactersNumber>) "يتخطى العدد المحدد من الأحرف ، بدءًا من موضع" مؤشر القراءة ؛ SkipLine "يتخطى السطر الذي يوجد به مؤشر القراءة ؛ اكتب ( <String>) "يكتب سطرًا ؛ WriteLine ( <String>) "يكتب سطرًا ويحرك مؤشر الكتابة إلى السطر التالي ؛ <Lines>) "يكتب العدد المحدد من الأسطر الفارغة.</p><p>تعرفنا على جميع طرق وخصائص فئة FileSystemObject ، ضع في اعتبارك مثالًا على استخدام هذه الفئة:</p><p>"تعيين ثوابت أكواد مجلد النظام 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 "تحقق من وجود ملف في المجلد المؤقت <a href="https://svd-komi.ru/ar/to-install-on-your-computer/chem-otkryt-paketnyi-fail-windows-bat-sozdanie-faila-s-rasshireniem-bat-primenyaemye/">ملفات الويندوز</a>، حذف هذا الملف إذا كان 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 (نتيجة)</p><h3>حذف البرنامج النصي للملفات القديمة</h3> <p>تم تصميم هذا البرنامج النصي لتنظيف النظام من الملفات القديمة في مؤقتة <a href="https://svd-komi.ru/ar/to-install-on-your-computer/linux-udalit-papku-iz-konsoli-komanda-rmdir-rd-udalit-katalog/">أدلة Windows</a>وملفات تعريف المستخدمين. في هذا المثال ، يمكنك أن ترى كيف تعمل جميع التركيبات المذكورة أعلاه تقريبًا: بنية البرنامج النصي ، وأسماء المتغيرات ، والعمل مع المصفوفات والمجموعات ، ومعالجة الأخطاء يدويًا ، وقراءة متغيرات النظام ، وإنشاء ملف نصي لسجل البرنامج النصي ، العمل مع نظام الملفات ، باستخدام الإجراءات.</p><p> "==== رأس معلومات البرنامج النصي ====" اسم البرنامج النصي: 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</p><p>لذلك رأينا أساسيات برنامج Visual Basic. دعونا نلخص ونحدد إيجابيات وسلبيات هذه السيناريوهات:</p> <ul><li>لا تتطلب البرامج النصية تجميعًا ويمكن تحرير كودها في أي وقت ؛</li> <li>نصوص VBS غير محدودة عمليًا في الوظائف ويمكنها استخدام مكتبات النظام المختلفة وكائنات التطبيقات الأخرى ؛</li> <li>يمكن تنفيذ ملفات VBS في كل من وحدة التحكم ووضع الإطارات ، بحيث يمكن للمستخدم التحكم في رؤية تقدم تنفيذ البرنامج النصي ؛</li> <li>تسمح لك البرامج النصية لـ VBS باستخدام الإجراءات والوظائف المخصصة ؛</li> <li>هذه اللغة مثالية للعمل مع المتغيرات النصية والرقمية ، والتواريخ ، وكذلك لمعالجة الملفات النصية ، وإدارة النظام والمجال ؛</li> <li>يصعب كتابة نصوص VBS وتتطلب مهارات برمجية ؛</li> <li>هذه البرامج النصية تعمل فقط في <a href="https://svd-komi.ru/ar/technical-preview/installation-and-configuration-of-operating-systems-installing-the-operating-system/">أنظمة التشغيل</a>عائلة Windows.</li> </ul><p>فيتالي بوشاريف</p> <h2>روابط خارجية</h2> <p>قسم الروابط الخارجية ، أي روابط المواقع الأخرى التي لا علاقة لهذا المورد بها ، بالإضافة إلى أن مالك موقع الموقع لا يتحمل أي مسؤولية عن توفر هذه الموارد ومحتواها.</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> <div class="clear"></div> <div class="afterpage author_rank"> <div class="social"> <div class="expert-title">شارك المقال:</div> <div style="float:left" class="yashare-auto-init" data-yashareL10n="ru" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,gplus" data-yasharetheme="counter" data-yasharetype="big"></div> </div> <div class="clear"></div> </div> <div class="clear"></div> <div class="clear"></div> <div class="related_posts"> <div class="title">مقالات مماثلة <span></span></div> <ul> <div class='yarpp-related'> <li> <div> <div class="top"> <div class="replace post_243"> <div class="img_border"> <span></span> <img src="/uploads/08bffce8baaebed34f6603f2d6a1f7e9.jpg" alt="مراجعة مفصلة لـ Vernee Apollo Lite - هاتف ذكي قوي على برنامج Helio X20 Vernee Apollo Lite" title="مراجعة مفصلة لـ Vernee Apollo Lite - هاتف ذكي قوي على برنامج Helio X20 Vernee Apollo Lite" loading=lazy loading=lazy> </div> </div> </div> <div class="clear"></div> <div class="info"> <div class="date">17 أبريل 2015</div> <a class="replace post_243" href="https://svd-komi.ru/ar/free-key/podrobnyi-obzor-vernee-apollo-lite---moshchnyi-smartfon-na-helio-x20-podrobnyi-obzor-vernee-apollo/">مراجعة مفصلة لـ Vernee Apollo Lite - هاتف ذكي قوي على برنامج Helio X20 Vernee Apollo Lite</a> </div> </div> <div class="clear"></div> </li> <li> <div> <div class="top"> <div class="replace post_243"> <div class="img_border"> <span></span> <img src="/uploads/19edd523078b0fb1ca64da7dd9faf8fb.jpg" alt="تحميل العاب nts للهاتف" title="تحميل العاب nts للهاتف" loading=lazy loading=lazy> </div> </div> </div> <div class="clear"></div> <div class="info"> <div class="date">17 أبريل 2015</div> <a class="replace post_243" href="https://svd-komi.ru/ar/to-install-on-your-computer/skachat-igry-na-telefon-nts-skachat-igry-na-android-igry-na-planshet/">تحميل العاب nts للهاتف</a> </div> </div> <div class="clear"></div> </li> <li> <div> <div class="top"> <div class="replace post_243"> <div class="img_border"> <span></span> <img src="/uploads/a87432ff3c0bf7de717c6b4792613b10.jpg" alt="تثبيت البرامج الثابتة الرسمية على Samsung Galaxy S7 Edge Exynos" title="تثبيت البرامج الثابتة الرسمية على Samsung Galaxy S7 Edge Exynos" loading=lazy loading=lazy> </div> </div> </div> <div class="clear"></div> <div class="info"> <div class="date">17 أبريل 2015</div> <a class="replace post_243" href="https://svd-komi.ru/ar/to-install-on-your-computer/skachat-torrent-proshivka-samsung-galaxy-s7-edge-ustanovka-oficialnoi-proshivki-na-samsung-galaxy-s7/">تثبيت البرامج الثابتة الرسمية على Samsung Galaxy S7 Edge Exynos</a> </div> </div> <div class="clear"></div> </li> <li> <div> <div class="top"> <div class="replace post_243"> <div class="img_border"> <span></span> <img src="/uploads/e3a40f246d00ea88c506164a0a96991d.jpg" alt="قم بتنزيل تطبيق VKontakte لنظام Symbian 9.4. فكونتاكتي v.2.0.62. تحميل"В Контакте" на телефон Nokia в Ява-Java формате.jar без регистрации" title="قم بتنزيل تطبيق VKontakte لنظام Symbian 9.4. فكونتاكتي v.2.0.62. تحميل"В Контакте" на телефон Nokia в Ява-Java формате.jar без регистрации" loading=lazy loading=lazy> </div> </div> </div> <div class="clear"></div> <div class="info"> <div class="date">17 أبريل 2015</div> <a class="replace post_243" href="https://svd-komi.ru/ar/kms-activator/skachat-na-simbian-9-4-prilozhenie-vkontakte-vkontakte-v-2-0-62-skachat/">قم بتنزيل تطبيق VKontakte لنظام Symbian 9.4. فكونتاكتي v.2.0.62. قم بتنزيل "فكونتاكتي" لهاتف نوكيا بتنسيق Java-Java .jar بدون تسجيل</a> </div> </div> <div class="clear"></div> </li> </div> </ul> </div> <div class="clear"></div> <div class="clear"></div> <div class="bread_wrap" xmlns:v="http://rdf.data-vocabulary.org/#"> </div> <div class="clear"></div> </div> <div class="sidebar col-xs-12 col-md-3 col-lg-3"> <div class="aside nav podrubriki"><div class="first_title"></div><div class="subnavtitle">أنواع <span></span></div><ul class="subnav"> <li><span class="asideli related-link" data-href="/category/faq/">التعليمات</span></li> <li><span class="asideli related-link" data-href="/category/comparison/">مقارنة</span></li> <li><span class="asideli related-link" data-href="/category/free-key/">مفتاح مجاني</span></li> <li><span class="asideli related-link" data-href="/category/technical-preview/">المعاينة الفنية</span></li> <li><span class="asideli related-link" data-href="/category/news/">الإخبارية</span></li> </div> <div class="clear"></div> <div class="sidebar_pop_articles"> <div class="title">المواد شعبية <span></span></div> <ul> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i0.wp.com/xakep.ru/wp-content/uploads/2014/10/vts_import_file.jpg" alt="فتح وتعديل وتعبئة تطبيقات Android" title="فتح وتعديل وتعبئة تطبيقات Android" loading=lazy loading=lazy> </div> </div> <div class="info"> <a href="https://svd-komi.ru/ar/free-key/programma-dlya-sozdaniya-apk-failov-vskryvaem-modificiruem-i/" class="replace post_87">فتح وتعديل وتعبئة تطبيقات Android</a> </div> </div> <div class="clear"></div> </li> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i1.wp.com/img.androidphone.su/wp-content/uploads/2017/03/motorola-moto-g4-plus-hard-reset-androidphone.su-01.jpg" alt="الرموز السرية لإعدادات مصنع Motorola C350 Motorola" title="الرموز السرية لإعدادات مصنع Motorola C350 Motorola" loading=lazy loading=lazy> </div> </div> <div class="info"> <a href="https://svd-komi.ru/ar/comparison/sekretnye-kody-dlya-motorola-razr-v3-sekretnye-kody-dlya-motorola-c350/" class="replace post_87">الرموز السرية لإعدادات مصنع Motorola C350 Motorola</a> </div> </div> <div class="clear"></div> </li> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i2.wp.com/smartfonoff.mobi/wp-content/uploads/2016/06/2.jpg" alt="تثبيت البرامج الثابتة الرسمية على Samsung Galaxy S7 Edge Exynos" title="تثبيت البرامج الثابتة الرسمية على Samsung Galaxy S7 Edge Exynos" loading=lazy loading=lazy> </div> </div> <div class="info"> <a href="https://svd-komi.ru/ar/to-install-on-your-computer/s7-edge-4pda-proshivka-ustanovka-oficialnoi-proshivki-na-samsung-galaxy-s7/" class="replace post_87">تثبيت البرامج الثابتة الرسمية على Samsung Galaxy S7 Edge Exynos</a> </div> </div> <div class="clear"></div> </li> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i2.wp.com/rulsmart.com/uploads/devices/hardreset/hotwtohardresetby_rulsmart.com_mini.jpg" alt="تثبيت البرنامج الثابت الرسمي على Samsung Galaxy A7 (2016) آخر تحديث لـ samsung galaxy a7" title="تثبيت البرنامج الثابت الرسمي على Samsung Galaxy A7 (2016) آخر تحديث لـ samsung galaxy a7" loading=lazy loading=lazy> </div> </div> <div class="info"> <a href="https://svd-komi.ru/ar/faq/ustanovka-oficialnoi-proshivki-na-samsung-galaxy-a7-ustanovka/" class="replace post_87">تثبيت البرنامج الثابت الرسمي على Samsung Galaxy A7 (2016) آخر تحديث لـ samsung galaxy a7</a> </div> </div> <div class="clear"></div> </li> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i0.wp.com/tablet.telemama.ru/prestigio/images/pochemy_ne_vkliychaetsia_3.jpg" alt="لا يعمل المستشعر على هاتف Prestigio" title="لا يعمل المستشعر على هاتف Prestigio" loading=lazy loading=lazy> </div> </div> <div class="info"> <a href="https://svd-komi.ru/ar/free-key/chto-delat-telefon-prestigio-ne-vklyuchaetsya-ne-rabotaet-sensor-na-telefone-prestigio/" class="replace post_87">لا يعمل المستشعر على هاتف Prestigio</a> </div> </div> <div class="clear"></div> </li> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i2.wp.com/rulsmart.com/uploads/devices/manuals/images/kernel.jpg" alt="لم يتم تحديث Zte axon 7" title="لم يتم تحديث Zte axon 7" loading=lazy loading=lazy> </div> </div> <div class="info"> <a href="https://svd-komi.ru/ar/technical-preview/zte-axon-7-ne-obnovlyaetsya/" class="replace post_87">لم يتم تحديث Zte axon 7</a> </div> </div> <div class="clear"></div> </li> </ul> <div class="clear"></div> </div> <div class="clear"></div> <div class="sidebar_new_articles"> <div class="title">مقالات جديدة <span></span></div> <ul> <li> <a href="https://svd-komi.ru/ar/faq/ustanovka-oficialnoi-proshivki-na-lg-optimus-g-pro-oficialnaya-proshivka/" class="replace post_1054">البرامج الثابتة الرسمية من LG عبر البرنامج الثابت KDZ لـ lg e975 lollipop</a> <div class="clear"></div> </li> <li> <a href="https://svd-komi.ru/ar/installation-on-a-computer/kak-vklyuchit-vse-processory-na-androide-kak-razognat/" class="replace post_1054">كيفية رفع تردد التشغيل عن معالج على Android</a> <div class="clear"></div> </li> <li> <a href="https://svd-komi.ru/ar/technical-preview/asus-zenfone-4-t001-proshivka-proshivka-ili-pereproshivka-smartfona-asus-zenfone-idem-v-rezhim/" class="replace post_1054">وامض أو وميض الهاتف الذكي Asus Zenfone</a> <div class="clear"></div> </li> <li> <a href="https://svd-komi.ru/ar/installation-on-a-computer/jiayu-jy-g4-visit-na-zastavke-posle-neudachnoi-proshivki-proshivka-jiayu/" class="replace post_1054">استعادة البرامج الثابتة JiaYu G4S جيايو g4</a> <div class="clear"></div> </li> <li> <a href="https://svd-komi.ru/ar/kms-activator/note-5-oficialnaya-proshivka/" class="replace post_1054">ملاحظة 5 البرامج الثابتة الرسمية</a> <div class="clear"></div> </li> </ul> <div class="clear"></div> </div> <div class="clear"></div> <div class="sidebar_question"> </div><p></p><div class="clear"></div></div> </div> <div class="clear"></div> <div class="section morkovin-antireklama-sidebar Closure"><div id="smartrotator_ad_1610"></div></div> </div> <div class="clear"></div> <div class="clear"></div> </div> </div> <div class="clear"></div> <footer class="footer"> <div class="kartasajta"><a href="https://svd-komi.ru/ar/sitemap.xml">خريطة الموقع</a></div> <div class="top_footer"> <div class="inner"> <div class="footer_col col-xs-6 col-sm-4 col-md-4"> <span data-href="/" class="related-link logo"> <div class="logo_text1"><img src="/uploads/logo.png" loading=lazy loading=lazy></div> </span> <div class="clear"></div> <p class="copyright">© 2021 svd-komi.ru - التعليقات والمقارنات ونظام التشغيل <br /> <span></span> </p> </div> <div class="footer_col col-xs-12 col-sm-2 col-md-2"> <p class="foot_cat_title">آخر</p> <ul class="categories"> <li><span class="related-link" data-href="">عن الموقع</span></li> <li><span class="related-link" data-href="">دعاية</span></li> <li><span class="related-link" data-href="">جهات الاتصال</span></li> </ul> </div> <div class="footer_col col-xs-6 col-sm-2 col-md-2 rubric_col"> <p class="foot_cat_title">فئات</p> <ul id="nav" class="categories"> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://svd-komi.ru/ar/category/faq/">التعليمات</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://svd-komi.ru/ar/category/comparison/">مقارنة</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://svd-komi.ru/ar/category/free-key/">مفتاح مجاني</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://svd-komi.ru/ar/category/technical-preview/">المعاينة الفنية</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://svd-komi.ru/ar/category/news/">الإخبارية</a></li> </ul> </div> <div class="clear"></div> </div> </div> <div class="clear"></div> </footer> <div id="toTop"></div> <script type="text/javascript" src="https://svd-komi.ru/wp-content/plugins/service_binet/ajax.js"></script><button id="responsive-menu-button" class="responsive-menu-button responsive-menu-boring responsive-menu-accessible" type="button" aria-label="Menu"> <span class="responsive-menu-box"> <span class="responsive-menu-inner"></span> </span> </button><div id="responsive-menu-container" class="slide-left" style="padding:20px;"> <ul> <li><a style="color:white;" href="https://svd-komi.ru/ar/category/faq/">التعليمات</a></li> <li><a style="color:white;" href="https://svd-komi.ru/ar/category/comparison/">مقارنة</a></li> <li><a style="color:white;" href="https://svd-komi.ru/ar/category/free-key/">مفتاح مجاني</a></li> <li><a style="color:white;" href="https://svd-komi.ru/ar/category/technical-preview/">المعاينة الفنية</a></li> <li><a style="color:white;" href="https://svd-komi.ru/ar/category/news/">الإخبارية</a></li> </ul> </div> <link rel='stylesheet' id='yarppRelatedCss-css' href='/wp-content/plugins/yet-another-related-posts-plugin/style/related.css?ver=4.9.1' type='text/css' media='all' /> <script type='text/javascript' src='https://svd-komi.ru/wp-content/plugins/wp-postratings/js/postratings-js.js?ver=1.85'></script> <script type='text/javascript'> /* <![CDATA[ */ var JQLBSettings = { "fitToScreen":"1","resizeSpeed":"400","displayDownloadLink":"0","navbarOnTop":"0","loopImages":"","resizeCenter":"","marginSize":"0","linkTarget":"","help":"","prevLinkTitle":"previous image","nextLinkTitle":"next image","prevLinkText":"\u00ab Previous","nextLinkText":"Next \u00bb","closeTitle":"close image gallery","image":"Image ","of":" of ","download":"Download","jqlb_overlay_opacity":"80","jqlb_overlay_color":"#000000","jqlb_overlay_close":"1","jqlb_border_width":"10","jqlb_border_color":"#ffffff","jqlb_border_radius":"0","jqlb_image_info_background_transparency":"100","jqlb_image_info_bg_color":"#ffffff","jqlb_image_info_text_color":"#000000","jqlb_image_info_text_fontsize":"10","jqlb_show_text_for_image":"1","jqlb_next_image_title":"next image","jqlb_previous_image_title":"previous image","jqlb_next_button_image":"http:\/\/svd-komi.ru\/wp-content\/plugins\/wp-lightbox-2\/styles\/images\/ru_RU\/next.gif","jqlb_previous_button_image":"http:\/\/svd-komi.ru\/wp-content\/plugins\/wp-lightbox-2\/styles\/images\/ru_RU\/prev.gif","jqlb_maximum_width":"","jqlb_maximum_height":"","jqlb_show_close_button":"1","jqlb_close_image_title":"close image gallery","jqlb_close_image_max_heght":"22","jqlb_image_for_close_lightbox":"http:\/\/svd-komi.ru\/wp-content\/plugins\/wp-lightbox-2\/styles\/images\/ru_RU\/closelabel.gif","jqlb_keyboard_navigation":"1","jqlb_popup_size_fix":"0"} ; /* ]]> */ </script> <script type='text/javascript' src='https://svd-komi.ru/wp-content/plugins/wp-lightbox-2/wp-lightbox-2.min.js?ver=1.3.4.1'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.9.1'></script> <script async="async" type='text/javascript' src='https://svd-komi.ru/wp-content/plugins/akismet/_inc/form.js?ver=4.0.1'></script> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> <script src="https://svd-komi.ru/wp-content/themes/avada/js/jquery.jshowoff.min.js"></script> <script> (function($){ $(window).scroll(function() { if($(this).scrollTop() > 200) { $('#toTop').fadeIn(100); } else { $('#toTop').fadeOut(100); } } ); $('#toTop').click(function() { $('body,html').animate({ scrollTop:0} ,400); } ); $('.navbar-toggle').click(function(e){ e.preventDefault(); $('#navbar').show(500); $('.wrapper, footer, body, .mobile_search').addClass('righted'); $('.navbar-toggle').fadeOut(500); } ); $('.mobile_close').click(function(e){ e.preventDefault(); $('#navbar').hide(500); $('.wrapper, footer, body, .mobile_search').removeClass('righted'); $('.navbar-toggle').fadeIn(500); } ); $('#features').jshowoff({ autoPlay: true, hoverPause: false, speed:3000, changeSpeed: 200, links: true, effect: 'fade', controls: false } ); } )(jQuery); </script> <script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script> </html>