الدرس الرابع في دورة تعليم autoit

بسم الله الرحمان الرحيم
والصلاة والسلام على أشرف الخلق والمرسلين
أما بعد فأيها الكرام
زوار مدونة ناصر بعزيز التقنية
السلام عليكم ورحمة الله تعالى وبركاته
أهلا وسهلا ومرحبا بكم في الدرس الرابع في الدورة الخاصة بتعليم لغة autoit
كنا قد تعرفنا على اللغىة من خلال المقدمة
ثم تعرفنا في الدرسين الأول والثاني على أهم أقسام وأساسيات هذه اللغة
وبعدها في الدرس الثالث تعرفنا على المتغيرات النظامية
وكنت قد قلت لكم أن هذا الدرس هو مهم جدا حيث سنعود إلى الأوامر الموجودة فيه في أغلب الدروس
والمتغيرات النظامية تعتبر شيء هام جدا جدا
حيث تغنينا عن كتابة أكواد كثيرة
ونحتاجها في أي برنامج نريد تصميمه تقريبا
فلذا عزيزي إن كنت لم تقرء الدرس الثالث فيُرجا
الضغط هنا
للعودة إلى الدرس الثالث

أما الآن فدعونا نبدء مع الدرس الرابع

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

تذكير بشكل الدالة المعرفة

في تعرفنا على الدالة
تعلمنا أن الدالة نوعين
وهما الدالة المعرفة والدالة المخصصة
واليوم ما نحتاجه هو الدالة المعرفة
وهي دوال قد صممت لتسهيل علينا الكثير من الأكواد
المعقدة منها والطويلة
وإختصارا للوقت, وحتى لا ننشغل بكتابة أكواد كثيرة كل ما أردنا عمل أمر معين
فجاأت هنا هذه الدوال العامة
التي تقم بتنفيذ لنا ما نريد ومتى ما نريد
وشكل الدالة يكن كالتالي
name(param1, param2, param3,…)
حيث
name : يمثل إسم الدالة
القوسين : يمثلا حقل إعدادات الدالة
وما وضع بين القوسين : يمثل إعدادات الدالة المتغيرة
التي سنرى أمثلة عديدة عنها في هذا الدرس إن شاء الله تعالى.

إدارة الملفات والمجلدات

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

إدارة الملفات

عزيزي لإدارة الملفات هناك دوال مخصصة لذالك
كدالة نسخ الملفات
fileCopy
ودالة نقل الملفات
fileMove
ودالة حذف الملفات
FileDelete
وهذا ما سا نتعرف عليه اليوم
وكل الدوال المذكورة تحتوي على
3 إعدادات
الأولى مشتركة
وهي مسار الملف
والثانية تختلف حسب الدالة
المهم سنبدء في شرحهم دالة دالة حتى يتضح الأمر

1. دالة نسخ الملفات fileCopy

شكل الدالة يكن كالتالي
fileCopy(المسار1, المسار2, الإشارة)
شرح
المسار 1 هو مسار الملف الذي تريد نسخه
المسار2
هو المسار الذي تريد نسخ الملف إليه
الإشارة
وهي
أن نشير إلى الدالة بتنفيذ بماذا ستفعل إذا واجهتها بعض المعيقات
كإيجاد إسم ملف يحمل إسم الملف الذي تريد نسخه
أو المسار غير موجود إلخ
والإشارة إما أن تكن بمتغيرات خاصة
أو بالأرقام
وأنا أفضل الأرقام حاليا
نظرا لعدم توسعنا الكافي في المتغيرات
والأرقام أسهل
وهنا بين أيدينا ثلاث إشارات مهمة
وهي :
0 أي نشير له أن إذا وجد ملف بنفس الإسم لا يستبدله
1أي نشير له أن إذا وجد ملف بنفس الإسم يقم باستبدله
8 أن نشر له بأن إذا لم يجد مسار النسخ يقم بإنشائه
لاكن هنا السؤال الذي يطرح نفسه هو :
لو أردت مثلا أن أشير له بأن يستبدل الملف وينشء المجلد في نفس الوقت فماذا أفعل
هل أكتب مثلا 18؟
هنا أيها القارء الكريم
علينا بأن نفصل بين الإشارات بعلامة +
حيث تصبح مثلا
1 + 8
أي إستبدل وإنشء المجلد إن لم يكن موجود
أو
0 + 8
أي لا تستبدل وإنشء المجلد إن لم يكن موجود
والآن مثال توضيحي
لنفترض أننا نملك ملف في القرص c وإسمه autoit.txt
ونريد نسخه إلى المسار التالي
d:\my files\
فنكتب
الكود كما يلي
fileCopy(“c:\Autoit.txt”, “d:\my files”, 1)
أي ينسخه بنفس الإسم مع إستبداله إن وجد
هنا يشترط أن يكن المسار صحيح
fileCopy(“c:\Autoit.txt”, “d:\my files\autoit2.txt”, 1 + 8)
وبهذا المثال
يقم بنسخ الملف بإسم مختلف
مع إستبدال الملف إن وجد وإنشاء المجلد إن لم يكن موجود
طبعا بإمكانك نسخ أكثر من ملف
مثلا لو أردت نسخ كل الملفات التي بإمتداد txt من مجلد إلى مجلد آخر
فأستبدل إسم الملف وإمتداده في المسار الأول ب
*.txt
فتصبح كالتالي مثلا
fileCopy(“c:\example\*.txt”, “d:\my files\”, 1 + 8)
أو إذا أردت نسخ كل الملفات مثلا فأستبدل إسم المسار وإمتداده ب
*.*
حيث يصبح مثلا
fileCopy(“c:\example\*.*”, “d:\my files\”, 1 + 8)
إلخ

2. دالة نقل الملفات fileMove

إن دالة نقل الملفات هي مشابهة تماما لدالة نسخ الملفات
حيث تتميز بكل خصائصها
فقط نستبدل كلمة
copy
بكلمة
Move

فتصبح الدالة كالتالي
fileMove
ومثال فقط على الدالة
fileMove(“c:\example\*.txt”, “d:\my files\”, 1 + 8)
طبعا الإشارات هي نفسها والإعدادات هي نفسها

3. دالة حذف الملفات fileDelete

هذه الدالة تحتوي على إعداد واحد فقط
حيث يكن شكل الدالة كما يلي
fileDelete(“مسار الملف”)
ومسار الملف هو مسار وإسم وإمتداد الملف الذي نريد حذفه
حيث تكن مثلا
fileDelete(“c:\autoit.txt”)
لحذف ملف واحد
أو
fileDelete(“c:\example\*.txt”)
لحذف كل الملفات النصية
أو
fileDelete(“c:\example\*.*”)
لحذف كل الملفات مهما كان إمتدادها

إدارة المجلدات

لغة autoit عزيزي وكأي لغة برمجة تتيح لك التحكم في المجلدات وإدارتها
ولعمل هذا هناك دوال مخصصة
حيث سنتعرف اليوم على :
دالة إنشاء المجلدات
dirCreate
ودالة نسخ المجلدات
DirCopy
ودالة نقل المجلدات
DirMove
ودالة حذف المجلدات
DirRemove

1. دالة إنشاء المجلدات dirCreate

هذه الدالة سهلة جدا وتحتوي على إعداد واحد فقط

وهو مسار المجلد الذي نريد إنشائه
حيث شكلها يكن كالتالي
DirCreate(“المسار”)
ومثال عليها
DirCreate(“c:\example”)

2. دالة نسخ المجلدات DirCopy

هذه الدالة تمكننا من نسخ محتوى مجلد ما إلى مجلد آخر
حيث يكن شكلها كالتالي
DirCopy(“مسار المجلد”, “مسار المجلد الذي نريد النسخ إليه”, الإشارة)
مسار المجلد هو المسار الذي يحتوي على المحتوى المراد نسخه
والمسار الثاني هو مسار المجلد الذي نريد نسخ المحتوى إليه
أما الإشارة
فهنا إشارتين فقط
0 في حال وجد نفس الملفات لا يقم بإستبدالها
1 في حال وجد نفس الملفات يقم بإستبدالها
مثلا
DirCopy(“c:\example”, “d:\programation\autoit\example”, 1)
أي يقم بنسخ المجلد
وإستبدال المحتوى إن كان موجود
أو
DirCopy(“c:\example”, “d:\programation\autoit\example”, 0)
أي لا يقم بإستبدال المحتوى إن كان موجود مسبقا.

دالة نقل مجلد DirMove

هذه الدالة تشبه تماما دالة نسخ مجلد
يكفي فقط إستبدال كلمة
copy
بكلمة
move
فتصبح
DirMove
مثال على الدالة
DirMove(“c:\example”, “d:\programation\autoit\example”, 1)
أي أمرته بنقل المجلد إلى مجلد آخر مع إستبدال المحتوى إن كان موجود مسبقا.

4. دالة حذف مجلد

هذه الدالة تحتوي على إعدادين فقط وهما
مسار المجلد والإشارة
حيث هي على الشكل التالي
DirRemove(“مسار1”, إشارة)
المسار يعني مسار المجلد الذي نريد حذفه
أما الإشارة
فهنا عندنا إشارتين
الأولى
0 وتشير إلى حذف المجلد في حال كان فارغا
والثانية هي :
1 وتشير إلى حذف المجلد على أي حال
مثال توضيحي
DirRemove(“c:\example”, 1)
يعني أخبرته بحذف المجلد على أي حال
DirRemove(“c:\example”, 0)
وهنا أمرته بحذف المجلد شرط أن يكن فارغا

ملاحظات

1. يجب كتابة المسارات بين علاماتي تنصيص
حتى وإن لم يكن المسار يحتوي على مسافات
2. لو لم نقم بوضع الإشارة فهو يستخدم إشارة 0 بشكل تلقائي
يعني مثلا
في نسخ الملفات يستخدم الإشارة عدم إستبدال الملفات بشكل تلقائي
لذا إن كنت تريد أن تشر له بعدم الإستبدال
فبإمكانك الإستغناء عن الإشارة
فتصبح الدالة مثلا كالتالي
fileCopy(“c:\autoit.txt”, “d:\my files”)
ونفس الشيء مع الدوال الأخرى.
3. يجب تقديم المسارات الصحيحة حتى تنجح العملية بنجاح.
4. إذا إستخدمت أمر حذف كل الملفات أو كل المجلدات
وكان هناك ملفات مخفية فلن يقم بحذفها
لذا يجب عليك إظهارها وإزالة الحماية عنها أولا
وهذه اللغة تحتوي على أوامر للقيام بهذه العملية وسنتعرف عليها فيما بعد

ملاحظات عامة

1. عليك بقراءة الدروس السابقة وتدوينها وفهمها جيدا
حتى تسهل لك الدروس التالية
وأنا في الخدمة بإمكانك أن تكتب سؤالك إما في تعليق وإما في صفحة أسئلة الأعضاء.
2. دائما المسارات والنصوص في هذه االلغة تكن بين علامات تنصيص.
3. دائما يجب أن نفصل بين إعدادات الدالة بعلامة الفاصلة

خاتمة

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

الدرس الثاني في دورة تعلم لغة autoit

السلام عليكم ورحمة الله تعالى وبركاته
أهلا وسهلا بكم في الدرس الثاني من تعلم لغة autoit
قد كنا في
الدرس الأول
قد تعرفنا على الدوال والمتغيرات
وقلت لكم أن في الدرس الثاني سنتعرف مع بعض على أساسيات أخرى في قواعد هذه اللغة
اليوم سنتعرف على أمران آخران
هما الأوامر الشرطية If
وال حلقة التكرارية loop
أولا نبدء مع

الأوامر الشرطية

تستخدم الجملة الشرطية IF عند حاجتنا لاتخاذ قرارات مختلفة حسب شرط معين .
مثال : 
إذا كانت درجة الطالب أكبر من أو يساوي 60 فهو ناجح ، وإذا كانت أقل من 60 فهو راسب 
وللأمر الشرطي عدة صيغ
دعونا نتعرف عليها اليوم

صيغة  IF – THEN

IF    الشرط المطلوب اختباره THEN الأمر الذي سيتم تنفيذه اذا كان الشرط صحيح

مثال :

IF $var >=60 then return “ناجح”

صيغة  IF – THEN – ENDIF

IF    الشرط المطلوب اختباره THEN 
الأوامر أو الجمل التي سيتم تنفيذها اذا كان الشرط صحيح
ENDIF

مثال :


IF $var >=60 then 
return “ناجح”
ENDIF

صيغة  IF – THEN – ELSE

IF    الشرط المطلوب اختباره THEN
مجموعة الجمل لتي سيتم تنفيذها اذا كان الشرط صحيح
ELSE
مجموعة الجمل التي سيتم تنفيذها إذا كان الشرط خاطء
ENDIF

مثال :


IF $var >= 60 then
return “ناجح”
ELSE
return “غير مجتاز”
ENDIF

صيغة  IF – THEN – ELSEIF

IF    الشرط الأول المطلوب اختباره THEN
مجموعة الجمل لتي سيتم تنفيذها اذا كان الشرط الأول صحيح
ELSEIF   الشرط الثاني لمطلوب اختباره THEN
مجموعة الجمل التي سيتم تنفيذها إذا كان الشرط الثاني صحيح
ELSE
مجموعة الجمل التي سيتم تنفيذها إذا كانت كل الشروط خاطئة
ENDIF

مثال :


IF $var >=90 then 

return “ممتاز”

ELSEIF $var>=80 then 
return “جيدجدا”
ELSEIF $var >=70 then 
return “جيد”
ELSEIF $var >=60 then 
return “مقبول”
ELSE
return “غير مجتاز  ”
ENDIF

الجملة الشرطية switch CASE :

تستخدم هذه الجملة إذا كان هناك عدة احتمالات للشرط ، فهي تقوم بنفس عمل جملة IF ولكن بطريقة أسهل .——————————————————————————–
الصيغة العامة لها :

switch الأمر الذي تريد إختباره وتقييمه
CASE الاحتمال الأول 
يتم تنفيذ مجموعة الجمل 1

CASE الاحتمال الثاني 
يتم تنفيذ مجموعة الجمل 2
CASE ELSE  
الجمل التي سيتم تنفيذها في حالة عدم تحقق أي شرط من الشروط السابقة

endSwitch

مثال على switch CASE


switch $var
CASE 90 TO 100
return “ممتاز ”
CASE 80 TO 89
return “جيد جدا”
CASE 70 TO 79
return ” جيد ”
CASE 60 TO 69
return “مقبول ”
case else 
return “غير مجتاز ”
endSwitch

الأمر الشرطي select case

يستخدم هذا الخيار في حال تريد أن تقم بعرض خيارات على المستخدم وتريد معرفة الخيار الذي اختاره وتضع له أوامر ينفذها
يكن تركيب الكود كالآتي
select
case الإحتمال الأول
الأمر
case الإحتمال الثاني
الأمر
case else
الأمر في حال لم يتنفذ أي خيار من الذي حددته
endSelect
مثال

إظهار رسالة نعم ولا للمستخدم


$msg = MSGBox(4, “هل تريد حذف الملف”, إضغط على نعم إن كنت تريد المتابعة أو لا إذا كنت تريد إلغاء الأمر”)
select
case $msg = 6
msgBox(0, “الخيار”, “لقد تم الضغط على نعم”)
case $msg = 7
msgBox(0, “الخيار”, “لقد تم الضغط على لا”)
endSelect

الحلقات التكرارية Loop

تعريفها
فائدة الحلقة التكرارية هي أنها إذا كان شئ يتكرر أكثر من مرة فلا داعي لكتابته العديد من المرات تستخدم الحلقة التكرارية و تضع فيها العدد أي عدد مرات التكرار
و الحلقة تفي بالغرض هذا كل شئ
هناك عدة أنواع في لغة autoit
سنستعرضها في ما يلي

Do Until Loops

لإنشاء هذه الحلقة يجب أن نكن نملك متغير حتى يكن العد عليه
أو أن يكن متغير أو أمر جاهز
وصيغته تكن
do
الأوامر التي تريدها أن تتنفذ في الحلقة
until الشرط الذي تريده أن يتحقق
مثال


Local $i = 0
Do
MsgBox(0, “قيمة المتغير $i هي :”, $i)
$i = $i + 1
Until $i = 10

هنا أنشأنا متغير إسمه $i
وأخبرنا الحقل التكراري أنه يعرض لنا قيمة المتغير $i وتزويد رقم 1 كل مرة
إلى غاية تحقق القيمة 10 في المتغير $i

While Loops

هذا الحقل هو متميز
حيث يبقى يعمل حتى القيمة المحددة
وإن لم تتحقق فيبقى يعمل
مثال :


$counter = 0
While $counter <= 5 MsgBox(0, "قيمة المتغير $counter هي:", $counter) $counter = $counter + 1 WEnd

For Loops

هذا الحقل نستخدمه في العد
وبدون إعلان متغير سابق
حيث يمكننا مثلا العد من 5 إلى 10 أو من 10 إلى 5 وبكل سهولة
مثال
For $counter = 5 to 10
MsgBox(0, “القيمة هي : “, $counter)
Next
حيث بكلمة next ننهي إطار الحلقة التكرارية
لا تقلق عزيزي إذا صعب عليك هذا الأمر
فنحن الآن نقم بالإستعراض فقط
ومعرفة القاعدة
وأكيد سنتوسع فكلما عرفناه في الدروس السابقة
هي هذه القواعد الأساسية في لغة autoit وفي كل لغات البرمجة
في الدرس القادم سنتعرف على بعض الماكروات المهمة macros
سيكون الدرس الثالث متوفر قريبا من خلال
هذا الرابط
تحياتي ولا تنسوني من دعائكم الصالح