ملف نصي لنظام التشغيل ويندوز
ملف برمجة ويندوز ( WSF ) هو نوع ملف يستخدمه مضيف برمجة ويندوز من مايكروسوفت . يسمح هذا النوع بدمج لغتي البرمجة JScript و VBScript في ملف واحد، أو لغات برمجة أخرى مثل Perl و Object ReXX و Python و Kixtart إذا قام المستخدم بتثبيتها. يمكن أيضًا استخدام هذه الأنواع من البرامج النصية لربط العديد من البرامج النصية الخارجية باستخدام مُعامل في الوسم <script> بطريقة مشابهة لـ HTML . ملفات برمجة ويندوز لها الامتداد .ws . يشير ملف WSF إلى كل وحدة برمجية في تسلسل هرمي XML أساسي كما هو موضح أدناه، ملتزمًا بالمعايير خارج الوسوم. يمكن معالجة الاستخدام الحرفي لـ <script> أو <script> داخل الوسوم والتحديات المماثلة باستخدام CDATA ، كما هو موضح في الأمثلة.src<script>.WSF<script></script><script><script>
عزل الأخطاء
قد يكون استخدام WSF مفيدًا لعزل الأخطاء. تمنع طبيعته المعيارية تداخل مرجع نص برمجي مع آخر. إليك مثال على WSF يحتوي على وحدة نمطية تُنتج خطأً وأخرى لا تُنتجه:
<?xml version="1.0" ?> < job id= "يعمل جزئيًا" > <!-- لن يعمل هذا --> <script language= "VBScript" > '<![CDATA[ WScript.echo 4 / 0 ' يا إلهي! لا يمكنك القسمة على صفر... ']]> </script> <!-- سيعمل هذا... بالتأكيد... --> <script language= "VBScript" > '<![CDATA[ WScript.echo " مرحبًا أيها المبرمجون!" & vbNewline & _ "رائع! لقد نجح الأمر!" ']]> </script > </job>ستُنتج وحدة البرمجة النصية الأولى خطأ "القسمة على صفر". عادةً ما يؤدي هذا إلى إنهاء البرنامج النصي في مُضيف البرامج النصية لنظام ويندوز، ولكن هذه الطريقة المعيارية تسمح للبرنامج النصي بالاستمرار وتنفيذ وحدة البرمجة النصية الثانية.
دعم اللغات المتعددة
يدعم ملف Windows Script لغات برمجة متعددة، كما هو موضح في مرجع Windows Script Host . إحدى ميزات هذا النوع من الملفات هي إمكانية استخدام أكثر من لغة برمجة في آنٍ واحد. هذا يعني أنه يمكنك استخدام لغة برمجة نصية مع كود من لغة أخرى. المثال الأبرز لمستخدمي VBScript القدامى هو استخدام Microsoft JScript لتلبية طلب فرز في VBScript، نظرًا لعدم وجود دالة فرز مدمجة لمصفوفة من القيم. يمكن لمستخدمي VBScript كتابة دالة فرز خاصة بهم أو استعارة دالة من كائن موجود مثل ADO ( ActiveX Data Objects ) Recordset أو .NET ( .NET Framework ) ArrayList ، ولكن أسرع طريقة لفرز مصفوفة هي استخدام الدالة المدمجة في JScript . إليك مثال بسيط لكيفية عملها:
<?xml version="1.0" ?> < !-- دمج جافا سكريبت وفي بي سكريبت --> < job id= "SORT-VBScriptWithJScript" > <script language= "JScript" > function SortVBSArray ( arr ) { return arr.toArray (). sort () ; } </script> <script language= "VBScript" > '<![CDATA[ '** أسرع فرز: استدعاء فرز جافا سكريبت من في بي سكريبت myData = "a,b,c,1,2,3,X,Y,Z,p,d,q" wscript.echo "القائمة الأصلية للقيم: " & vbTab & myData starttime = timer () sortedArray = SortVBSArray ( split ( myData , "," )) endtime = timer ( ) jscriptTime = round ( endtime - starttime , 2 ) wscript . echo "تم فرز JScript في " & jscriptTime & " ثانية: " & vbTab & sortedArray ' ]]> </script> </job>يبدو الناتج على هذا النحو، مرتبة حسب تسلسل رمز ASCII :
القائمة الأصلية للقيم: a,b,c,1,2,3,X,Y,Z,p,d,q مُرتبة في جافا سكريبت خلال 0 ثانية: 1,2,3,X,Y,Z,a,b,c,d,p,qكشف الثوابت
من الميزات المفيدة الأخرى لملفات WSF إمكانية ربط غلاف XML بمرجع كائن أو عنصر تحكم، مما يسمح باستخدام ثوابت ذلك الكائن بدلاً من تعريفها. في ملفات VBScript و JScript العادية ، يُضطر المستخدم إلى تعريف قيمة الثابت (خارج نطاق الثوابت الداخلية لـ Windows Script Host ) لاستخدامه. يوضح المثال التالي ذلك:
const adLockBatchOptimistic = 4 MsgBox "قيمة ""adLockBatchOptimistic"" هي " & _ adLockBatchOptimistic & "." , vbInformation , "adLockBatchOptimistic"إذا كانت وثائق الكائن لديك تشير فقط إلى اسم الثابت دون قيمته، فلن تتمكن من معرفة قيمته إلا بمساعدة بيئة تطوير متكاملة ( IDE) توضح لك ما يُقابله. باستخدام تعريف مرجع WSF، يمكنك استخدام الثوابت دون الحاجة إلى تحديد قيمها. يوضح المثال أدناه قيم العديد من الثوابت الشائعة في مجموعة سجلات ADO ( كائنات بيانات ActiveX ) .
<?xml version="1.0" ?> <!-- مثال WSF مع مرجع الكائن ملاحظات لهذا المثال الرسمي للغاية: تُستخدم CDATA لمساعدة محلل XML على تجاهل الأحرف الخاصة في محتوى البرنامج النصي. يجب إخفاء فتح وإغلاق CDATA عن VBScript عن طريق جعلهما تعليقات. <package> <job id= "EnumerateConstantsADO" > <reference object= "ADODB.Recordset" /> < script language= "VBScript" > ' <![CDATA[ dim title , str , i ctecArray = Array ( "adOpenUnspecified" , "adOpenForwardOnly" , _ " adOpenKeyset" , "adOpenDynamic" , "adOpenStatic" ) title = "قيم مجموعة سجلات ADO للثوابت" str = title & vbNewLine & vbNewLine str = str & "*ثوابت تعداد نوع المؤشر*" & vbNewLine For i = 0 to ubound ( ctecArray ) str = str & Eval ( ctecArray ( i )) & vbTab & ctecArray ( i ) & vbNewLine Next str = str & vbNewLine str = str & "*ثوابت تعداد نوع القفل*" & vbNewLine ltecArray = Array ( "adLockUnspecified" , "adLockReadOnly" , _ "adLockPessimistic" , "adLockOptimistic" ,_ "adLockBatchOptimistic" ) For i = 0 to ubound ( ltecArray ) str = str & Eval ( ltecArray ( i )) & vbTab & ltecArray ( i ) & vbNewLine Next MsgBox str , vbInformation , Title ' ]]></script> </job> </package>سيؤدي تشغيل البرنامج النصي أعلاه من ملف ذي .WSFامتداد معين، مثل ملف باسم EnumerateConstantsADO.wsf، إلى إنتاج النتيجة الموضحة أدناه:
قيم سجلات ADO للثوابت*ثوابت تعداد أنواع المؤشرات* -1 فتح غير محدد 0 فتح للأمام فقط 1 فتح مجموعة المفاتيح 2 فتح ديناميكي 3 فتح ثابت*ثوابت تعداد أنواع الأقفال* -1 قفل غير محدد 1 قفل للقراءة فقط 2 قفل متشائم 3 قفل متفائل 4 قفل متفائل للدفعاتبالإضافة إلى ذلك، فإن استخدام مرجع الكائن لعرض الثوابت يجعل كتابة البرنامج النصي أقرب إلى الكتابة بلغة برمجة قياسية. في الواقع، سيتم تجميع محتوى البرنامج النصي النموذجي، المكتوب بلغة VBScript، إلى برنامج Visual Basic وتشغيله بنفس الطريقة طالما أن هذا البرنامج يستخدم نفس مرجع ADODB.
انظر أيضاً
روابط خارجية
- استخدام ملفات البرمجة النصية لنظام ويندوز - من أرشيف موقع مايكروسوفت على الإنترنت (The Wayback Machine)
- لغات البرمجة النصية المتوفرة في مركز البرمجة النصية - من أرشيف موقع مايكروسوفت على الإنترنت ( The Wayback Machine)
- إدارة نظام التشغيل ويندوز
