مشاهدة النسخة كاملة : دورة real_mtz في الباتش سكريبت
ahmdatef
07-03-2006, 08:27 AM
هذه الدورة الرائعة فى الباتش سكريبت و كيفية التعامل مع أوامرها لا غنى عنها لكل من يريد احتراف العمل مع الحاسوب و قد كتب تلك الدورة أخ عزيز و هو الأخ معتز فجزاه الله خيرا و قد وافق مشكورا على نقل تلك الدروس إلى منتدانا العزيز و لا يريد إلا دعوة صالحة فى ظهر الغيب
بسم الله الرحمن الرحيم
وضعت الاكواد في مربعات الاكواد حتي تتمكنو من النسخ و اللصق لها بسهولة، لكنها لا تظهر كما يجب .. لذلك ستجدون في بعض الدروس ، الاكواد على شكل صور ..
=============================================
الدرس الاول :
1- مقدمة حول الباتش سكريبت
2- باتش بسيط : Hello paint
3- شرح لبعض الاوامر
الدرس الثاني:
1- فكرة اكبر عن عمل ملفات الباتش
2- الاوامر و سويتشاتها
3- تشفير ملف الباتش ، حتى لا يستطيع أحد العبث في الملف بعدك
4- مقدمة في متغيرات النظام
الدرس الثالث :
1-متابعة متغيرات النظام
2-استخدام التعليقات ، و تغيير لون منفذ الاوامر، و انشاء مجلد جيد و اوامر اخرى
3-استدعاء باتش من باتش
4-عمل الملفات النصية من الباتشات و الاوامر ، و طباعتها
أمثلة تطبيقية :
باتش لتثبيت مجموعة من البرامج تثبيت صامت تماماً
باتش التنظيف للنظام
- حول عمليات الملفات ، النقل ، النسخ
الدرس الرابع ....
1-المتغيرات في الباتشات ، و التعامل معها .....
2-الجمل الشرطية if
3-العلامات (labels) ....
مجموعة من الأوامر السحرية :
أوامر تقوم بأغراض متعددة .. غير موجودة في الوندوز ..
بسم الله الرحمن الرحيم
أولاً: مقدمة حول الباتش سكريبت :
هي لغة بسيطة ، تعتمد في تركيبها على أوامر موجودة أصلاً في نظام التشغيل ، تستدعي هذه الاوامر على شكل سلاسل متتابعة ، مما يختصر الوقت و الجهد ، فمثلاً ، لو اأننا في شبكة ، و على كل حاسب مجلدات موجودة في المستندات(Mydocs) و موجودة في C: و نريد نقل كل هذه الملفات إلى D: لاننا سنمسح الاجهزة جميعاً ، سيكون من الصعب علينا التوجه الى كل حاسب و القيام بهذه الخطوات ، مرة تلو الاخرى ، فبدل ذلك ، نصنع ملف باتس سكريبت ، يقوم بذلك بمجرد تشغيله ، و نشاركه على جميع الحواسيب ، و بدل أن نذهب الى الحواسيب واحداَ واحدً ، نطلب من العمال تشغيل هذا الباتش من النت وورك ، و بذلك سنوفر الكثييييير من الوقت.
أي أن الهدف الرئيسي منها ، الاختصار في تنفيذ المهمات ، و توفير الجهد و الوقت
الدرس الأول : برنامج بسيط (Hello Paint):
في هذا الدرس ، سنعمل ملف باتش ، يقوم بتشغيل برنامج الرسام ، و يكتب عبارة (Hello paint) ، و عند انتهاء برنامج الرسام ، سيكتب :Good bye paint، Enjoy real_mtz turtoials و خلال الدرس سنتعارف على الاوامر الخاصة بالتعامل مع الواجهة البسيطة للمستخدم ، من:
1-البداية
2- كيفية اظهار مخرجات على الشاشة ،
3- استدعاء برامج مدمجة في الوندوز (اي موجودة في مجلد الوندوز !!!!!!s او system32)
1-كيف نبدأ ،
سنستخدم محرر النصوص الموجود مع الوندوز (notepad) ، لكتابة السكريبتات ، و عند الحفظ نحفظ الملف بامتداد .bat او .cmd اي نضيفهما بعد الاسم الذي نريده
الآن لنبدأ مع الباتش فايل الصغير الذي نريد ان نصنعه كاول مثال ، شغل الnotepad (لو لا تعلم كيف تشغلها ، اعتقد ان الموضوع لا يناسبك) و اكتب الآتي
@echo off
title hello paint batch by real_mtz
echo helloooo Mr.paint
c:\!!!!!!s\system32\mspaint.exe
echo goodbye paint
pause
Exit
، ثم احفظه بامتداد .bat كما في الصورة
http://img394.imageshack.us/img394/9071/51tb2uu.gi f
ثم شغله ، و لاحظ ما يقوم به البرنامج ، و الآن لنحلل ما يقوم به ، خطوة بخطوة:
في السطر الاول نجد الأمر @echo off ،
شرحecho off@:
وظيفة هذا الامر هو ان يخبر موجه الاوامر بان يتجاهل الكلام المكتوب (الاوامر) أي لو اننا كتبنا في الملف اسم برنامج او ملف او اي شيء غير النصوص الظاهرة التي نحدد نحن ظهورها ، لن تظهر .
title
هذا الامر يحدد عنوان النافذة التي سيعمل فيها الباتش فايل
echo
echo ALooooooooهذا الامر وظيفته اظهار الكلام الذي نختاره على الشاشة ن فعندما نكتب
aloooooooooooسيطبع كلمة
و هو الجزء الوحيد الذي يظهر ، من الكلام الذي نكتبه في الباتش فايل ما دمنا استخدمنا @echo off
c:\!!!!!!s\system32\mspaint.exe
هذا اسم البرنامج الذي شغلناه ، فكما قلنا ان اساس الباتش سكريبت ، الاعتماد على مكونات النظام ،
فنحن شغلنا الملف من النظام نفسه ، ولو انا كتبنا اسم اي ملف آخر فان هذا الملف سيعمل ، باختصار ، بامكاننا تخيل انفسنا اثناء كتابة الباتش فايل ، اننا نتعامل مع الدوس ، فاثناء تعاملنا مع الدوس نكتب اسم البرنامج ليشتغل، و كذلك في الباتش فايل ، لكن تذكر ان الأوامر تعالج سطراً سطراً فلو اننا اردنا تشغيل اكثر من برنامج واحداً تلو الآخر ، سنكتب الاسماء كل واحد في سطر ، و بالتالي ، تعمل حسب الترتيب اللي هي مرتبة في داخل الباتش فايل، قد يتساءل أحدكم ، لو انني أشغل الباتش من مصدر متغير المسار (قرص ليزري) كيف ساحدد مسار البرنامج ، الجواب ببساطة هو انا تكتب اسم الملف فقط دون المسار ، و تراعي ان يكون الملف الذي استدعيته من ملف الباتش في نفس مسار الباتش فايل ، أي بجانبه ،
و كذلك لو اردت الباتش فايل أن يتعامل مع ملفات النظام او يشغل احدها بامكانك استعمال متغيرات النظام التي سأغطيها لاحقاً ، او ان تكتب اسم البرنامج ليعمل فوراً ، كما في dxdiag.
echo
مرة اخرى استخدمنا echo لاظهار كلمات على الشاشة
pause
هذا الامر يوقف تنفيذ الباتش فايل ، الى ان يقوم المستخدم بضغط اي زر على الكيبورد ، ثم يتابع النظام تنفيذ محتويات هذا الملف بعد ان يضغط المستخدم اي زر .
exit
هذا الامر كما هو واضح ، ينهي الباتش فايل و يغلقه
لاحظ ان الملف يتم تنفيذه سطراً بسطر ،
كما رأيتم ، هذه لا تستحق ان تسمى لغة برمجة لكن بامكانها تنفيذ مهمات جميلة و خدع و حيل كثيرة ، خصوصاً بتعاونها مع مكونات النظام و البرامج الاخرى (هي اصلا ليست الا اعتماد على البرامج و مكونات النظام العامة) ، و سنغطي ذلك في الدروس القادمة باذن الله
ahmdatef
07-03-2006, 08:29 AM
اقدم لكم صفحة مكرو سوفت الخاصة بالسكربتات الجاهزة عسى ان يتم الإستفادة منها او السؤال عن كيفية عملها او ماذا تفيد لكي يستفيد الأخوة الأعضاء اكثر وأكثر
الموقع :
http://www.microsoft.com/technet/scr...s/default.m spx
اضع لكم موقع يحتوي على كثير من الامثلة ولجميع انظمة التشغيل تقريبا.
http://www.robvanderwoude.com/
http://labmice.tech!!!!!!.com/articles/batchcmds.h tm
بسم الله الرحم الرحيم ، الدرس الثاني
البداية:
بنود درس اليوم :
1- فكرة اكبر عن عمل ملفات الباتش
2- الاوامر و سويتشاتها
3- تشفير ملف الباتش ، حتى لا يستطيع أحد العبث في الملف بعدك
4-مقدمة في متغيرات النظام
1-فكرة عمل الباتشات :
الباتشات ، هي استخدام لبرامج صغيرة مدمجة في النظام او موجودة في نفس مجلد الباتش، منها ما يكون بارز ، و منها ما هو مدمج بملفات النظام و لا نستطيع ايجاده مباشرة ، فكر أمر نستخدمه ، هو برنامج صغير ، فمثلاً ، عند استخدام الامر chkdsk و هو متفحص الاقراص ، في موجه اوامر الدوس فإن الوندوز يستدعي البرنامج chkdsk.exe الموجود في ملفات النظام ، فكل امر نستخدمه في بيئة عملنا (الوندوز) ، يجب ان يكون برنامج إما مدمج و المدمجة واضحة و تختص بالنسخ و النقل و المسح و غيرها من العمليات البسيطة ، او برنامج exe موجود في مجلد الوندوز او system32 او نفس مجلد الباتش ، و هذه البرامج لا حصر لها ، حيث يمكن ان تضع انت برنامج هناك ، و يصبح بامكانك استدعاؤه من ملفات الباتش التي تعمل على الجهاز ، و للتوضيح اليكم مثال على ذلك ، هو الامر sleep (الامر يستخدم لايقاف تنفيذ الباتش فترة من الزمن قبل الانتقال الى السطر التالي) فهذا الأمر كان موجود في الوندوز 95 و 98 و لكنه غير موجود في الاكس بي ، لذلك لا بد لنا من وضع هذا البرنامج في مجلد النظام system32 و اليكم الآن هذا المثال الذي يوضح ذلك بالصور :
a)لنعمل ملف باتش يستخدم الامر sleep ، و نرى ما الذي سيحدث
@echo off
echo I wil sleep for 10 seconds
sleep 10
echo I have just got up now * have ten seconds passed
pause
2-سترون الآن ، ان هذا الكود نفسه سيعمل بشكلين مختلفين ، حسب وضع ملفات النظام ووجود sleep.exe هناك
ملاحظة: وجود البرنامج (الامر) في نفس مسار الباتش هو كوجود البرنامج(الامر) في مجلدات النظام
الحالة الأولى : (الكود مع موجود sleep.exe في الsystem32 كذلك وجوده في !!!!!!s أو مجلد الباتش نفسه ، يؤدي نفس المهمة)
عند تشغيل ملف الباتش ، ستكون هذه هي النتيجة :
http://img394.imageshack.us/img394/5528/w6w2005072 21131051885873f84502.gif
http://img273.imageshack.us/img273/599/w6w20050722 112638188586953031d.gif
http://img394.imageshack.us/img394/2236/w6w2004444 sd.gif
الحالة الثانية : (نفس الكود مع غياب sleep.exe عن system32 و مجلد !!!!!!s و مجلد الباتش نفسه)
http://img273.imageshack.us/img273/4194/w6w25554ls .gif
http://img394.imageshack.us/img394/9439/w6w2006660 dy.gif
**ملاحظة : تجنب تسمية الملف sleep فذلك يؤدي الى ان يكرر الباتش تشغيل نفسه
، يعني انت اسميته sleep ، فالنظام سيبحث في المجلدات الثلاث التي اشرنا اليها (system32 و !!!!!!s و مكان وجود الباتش) فسيجد sleep.bat و يشغله ، اي ان الباتش سيستدعي نفسه ، ثم يكرر ذلك
****هااااااام جداً: عند تنفيذ الباتش ، فان الاوامر(برامجها الصغيرة) تُقرأ من :
1-system32
2-!!!!!!s (مسار الوندوز)
3- مسار الباتش نفسه
الآن و قد علمنا فكرة عمل الباتش و مبدأه ، فلننتقل الى كل امر(برنامج صغير) و سويتشاته ، حيث ان ذلك له دور كبيييييييييييييييير في عملنا مع الباتشات (دون البرامج ليس هناك باتش ، لانه لن يعمل اي امر نستخدمه)
2 - سويتشات البرامج
فكرة عامة حول السويتشات :
**ملاحظة : تذكروا ان قصدنا عن البرنامج في الباتش سكريبت : أمر
ما هي؟
السويتشات خيارات البرنامج عند تشغيله ، فكل برنامج له سويتشات خاصة تفعل وضعاً خاصاً له.
لم أفهم ، أين اجد هذه السويتشات و كيف اطبقها :
المثال الآتي يوضح ذلك ،
و الآن لنرى بعض هذه السويتشات على برامج مختلفة و نرى أثرها: سنستخدم برامج موجودة في الوندوز أصلاً لتوضيح هذه النقطة : لذلك فلنبدأ على بركة الله
1- اذهب إلى start ثم Run ثم اكتب cmd ثم اضغط OK
2- سيفتح أمامك موجه أوامر الوندوز ، فلنبدأ الآن بالتنقل بين مجلدات الحاسب من خلال موجه الأوامر ،
3- للدخول الى مجلد نكتب ما بين علامتي التنصيص "اسم المجلد cd" و للعودة للخلف خطوة "cd .." و لرؤية المجلدات dir
4- الآن ننتقل الى مجلد الوندوز كما في الصورة لنشغل برنامج chkdsk لتفحص القرص
(بالامكان تشغيل برامج النظام مباشرة، لكن البرامج العادية يجب الانتقال الى مجلدها او تكون في نفس مسار الباتش)
http://img401.imageshack.us/img401/8850/w6w207771h l.gif
لاحظ في الصورة أعلاه ، عندما حددنا السويتش للبرنامج ، اخترنا سويتش علامة الاستفهام ، و هو سويتش متكرر في كثير من البرامج يوضح سويتشات البرنامج و عمل كل منها ، بمعنى آخر عندما استخدمنا هذا السويتش طلبنا تشغيل البرنامج متبوعا بسويتش علامة الاستفهام شغلنا البرنامج في وضع التغريف به ، و هذا الوضع يدلنا على كل الاوضاع التي يمكن أن يعمل بها البرنامج و سويتشاتها فالآن لو عدنا و شغلنا البرنامج في وضع /F يقوم البرنامج عند تفحص القرص بتصحيح الاخطاء تلقائياً ، ينما لو لم نستخدمه لن يقوم بذلك، و من الجدير بالذكر انه من الممكن استخدام اكثر من سويتش في نفس الوقت لنحعل البرنامج يعمل في الوضعين في نفس الوقت فمثلاً بالامكان تشغيل chkdsk.exe /F /L (لاحظ المسافة بين كل سيوتشين) ذلك سيجعل البرنامج يصحح الاخطاء تلقائياً و يحاول استرجاع البيانات من القطاعات التالفة . و هكذا فإن كل سويتش يفعل وضع معين .. و لذلك علاقة ببرامج التثبيت ، حيث ان فيها وضعاً للتنصيب الهادئ يفعل بسويتش معين
ملاحظة: ليش شرطاً ان يكون علامة "/" هي المستخدمة لتفعيل السويتش فقد يستخدم "-" و قد يكون دون اي رمز ، فقط بمسافة متبوعة بالسويتش
الآن بامكاننا استخدام اي أمر ، مادام أننا علمنا كيفية ، التعرف على سويتشاته بال:"/?" الآن اترك لكم انتم الابداع و التعرف على كل امر و صيغته ، و الفت نظركم الى انني سأغطي بعض الاوامر و استخدامها بالتفصيل في درس لاحق
**** تذكر : ان كل سطر في الباتش ، امر يتوجه الى موجه الاوامر command prompt
3-كيف تمنع اعادة التعديل على الباتش الخاص بك :
ببساطة ، كل ما عليك ، هو أن تحول ملف الباتش الى برنامج exe باستخدام الاداة المرفقة :bat2exe ،
طريقة الاستخدام:
ضع ملف الباتش بجانب bat2exe ، و شغل البرنامج من موجه الاوامر ، مع الانتقال الى موضع الملف بموجه الاوامر ، ثم كتابة bat2exe متبوع بمسافة ، ثم متبوع باسم ملف الباتش المراد تحويله الى exe كما في الصورة .
http://img394.imageshack.us/img394/14/w6w208884os. gif
**ملاحظة: طريقة التنقل بين المجلدات كما في الصورة السابقة باستخدام الاوامر cd ،
4- مقدمة متغيرات النظام system variables:
عندما نعمل ملف باتش ، فإننا عادة ما نصنعه ليعمل على اي حاسوب ، ليس فقط على الحاسب الذي نستخدمه ، و عندما كان للمستخدم خيار التغيير في مجلد الوندوز و اسم الحاسب و غيره ، من المتغيرات التي تختلف من حاسب الى آخر ، كان لا بد من حل لمشكلة التنوع هذه ، فكان الحل هو متغيرات النظام ، حيث ان كتابة رمز احد المتغيرات كمتغير (مجلد الوندوز) ، يوجهنا فوراً الى مسار الوندوز المستخدم على الجهاز الحالي ، فهذه المتغيرات تلائم اختلاف البيئات التي يعمل عليها الملف و اعداداتها ، و هذا القسم شيق و جميل ، و ترقبوا في الدرس القادم ، كيفية عمل ساعة بسيطة عن طريق باتش فايل و بالاعتماد على متغيرات النظام........
ahmdatef
07-03-2006, 08:37 AM
بسم الله الرحمن الرحيم ، و الصلاة و السلام على نبي المرسلين و آله و صحبه أجمعين
ملاحظة: بالنسبة للاكواد الموضوعة يرجى نسخها مباشرة لانها لا تظهر كما يجب في المنتدى
الدرس الثالث:
درس اليوم صعب ، فأرجو عدم قراءته الا إذا كنت قرأت الدرسين الماضيين قراءة جيدة ، او كان لديك خلفية
عن الباتش سكريبت...
سنتناول اليوم في درسنا بضعة أمور ،
1-متابعة متغيرات النظام
2-استخدام التعليقات ، و تغيير لون منفذ الاوامر، و انشاء مجلد جيد و اوامر اخرى
3-استدعاء باتش من باتش
4-عمل الملفات النصية من الباتشات و الاوامر ، و طباعتها
1-تابع ، متغيرات النظام ...
كما قلنا ، متغيرات النظام هي متغيرات تختلف موجودة في النظام ، و هذه المتغيرات بامكاننا التحكم بها و تغييرها و عرضها ، وذلك له فوائد عديدة اهمها ، تسهيل الحصول على معلومات النظام للمبرمجين،
و اليكم هذا الجدول لمتغيرات النظام
http://www.w6w.net/users/28-07-2005/w6w_20050728092946188580be07d4e.GIF
الاستخدام :كل ما علينا هو باختصار شديد جداً ، ان تضع المتغير كما هو ، في الباتش ، و سيعطي تلقائياً قيمته ، اليكم المثال الآتي ، :
1- نريد ان ننشئ ملف باتش يعطينا تقريرعن الحاسب الذي عمل عليه، ثم يطبع هذا التقرير :
و نريد التقرير يكون كالآتي:
1- تاريخ انشاء التقرير و وقته
2- عدد المعالجات التي تعرف عليها النظام ، و نوع المعالج
3- مسار الوندوز
4- مسار اعدادات المستخدم
5- اسم المستخدم الذي قدم التقرير
6- الشبكة التي ينتمي اليها ، و اسم الجهاز
7- المجلد الذي تم تشغيل الباتش منه
الاوامر المستخدمة:
1-echo
2-title
3-rem
4-color
5-pause
6-MKDIR
7-start
8-sleep
9-cls
10-exit
شرح الاوامر الجديدة:
1-rem : يستخدم هذا الامر للتعليقات على الكود فقط ، اي ان منفذ الاوامر عند تنفيذه للباتش لن يقرأ ما بعد هذا الامر اطلاقاً ، بل سيتخطاه كأنه غير موجود فاينما وجدت سطر بدايته rem ، اعلم انه كأنه غير موجود
2-color : يستخدم هذا الامر لتغيير الوان موجه الاوامر ، و له مرافقان عبارة عن رمزان الاول يتك تطبيقه على الخلفية ، و الثاني يتم تطبيقه على النص ، و اليكم هذا الجدول بوضح كل رمز و لونه:
http://www.w6w.net/users/28-07-2005/w6w_20050728093050188586a81c377.GIF
فمثلاً لو أردنا نجعل الخلفية بيضاء باللون الابيض الساطع و النص باللون الاحمر العادي يكون شكل الامر كالآتي:
color F4
و عندها سيتغير شكل موجه الاوامر ،
3-MKDIR او RD، يستخدم هذا الامر لانشاء مجلد جديد ، و ذلك بكل بساطة بكتابة المسار الذي سيكون فيه المجلد ، مثلاً
MKDIR c:\!!!!!!!!\mtz\damas\etc\
ذلك سينشئ المجلد etc في القرص C: ، في المجلد !!!!!!!! في المجلد mtz في المجلد damas ،
و اذا لم يكن اي من هذه المجلدات الثلاث موجوداً ، فسيقوم الامر بانشائه ، حتى يصبح المجلد etc كما طبته انت
اما اذا كان الامر :
MKDIR etc
سينشئ المجلد etc في المجلد الحالي ، اي المجلد الذي تم تفعيل الباتش منه ،
**لاحظ : لا يوجد فرق اذا وضعنا ال"\" او لم نضعها بعد اسم المجلد المراد انشاؤه
و اذا أدرنا أن ننشئ مجلد داخل مجلد تشغيل الباتش نكتب
MKDIR 1st\2nd\etc
ذلك سينشئ المجلد etc في المجلد الحالي ( الذي تم تشغيل الباتش منه) ، في مجلد 2nd الموجود في 1st و هكذا
4- Start: هذا الامر نستخدمه لتشغيل امر ما ، او برنامج من مسار معين، السؤال الذي يطرح نفسه ، أليس مجرد كتابة الامر من دون شيء كـ:sleep يكفي لتشغيل الامر ، الجواب نعم ، لكن start يعطينا الفرصة لاستخدام خيارات متقدمة ، كانتظار انتهاء البرنامج ، و المتابعة بعد ذلك ، و كتحديد أهمية الامر (البرنامج) المطلوب تشغيله بالنسبة للمعالج (process piriority ) ، إضافةً الى ذلك ففيها تجنب لكثير من المشاكل الممكنة اثناء استدعاء الاوامر و البرامج ، فمن الآن و صاعداً سنستخدم Start لاستدعاء البرامج و الاوامر و لن نستخدم الطريقة القديمة إلا في الاوامر البسطية و الواضحة ، المدمجة مع الوندوز
الاستخدام:
Start "عنوان النافذة" /(switchone) /(switchtwo) /(switchthree) …. / ("مسار الملف او البرنامج المراد تشغيله") / (switches_of_program)
يتضح في صيغة الامر ، انه بالامكان استخدام كثير من السويتشات ، للامر start اليكم بعض السويتشات و استخدامها ،
http://www.w6w.net/users/28-07-2005/w6w_20050728094018188580e8918a5.GIF
مثال: تشغيل برنامج تفحص الاقراص في وضع التصحيح التلقائي ، مع اعطاؤه نصيب اكبر من طاقة المعالج ،
*ملاحظة:
1- من الآن فصاعداً سنستخدم %windir% و باقي المتغيرات ، لن نستخدم قيمة ثابتة حتى يعمل الباتش على كل الحواسيب،
2- لم يكن هناك داعي لكتابة مسار الملف لان الملف موجود في مجلد النظام
3- نستخدم علامتي التنصيص ، اذا كانت اسماء الملفات او المجلدات تحوي مسافة ،كذلك لو لم تكن تحوي مسافات فلا بأس في ذلك ، والسويتشات المرافقة للبرنامج المراد تشغيله باستخدام start تكون خارج علامتي التنصيص،
4- يجب وضع عنوان بين علامتي التنصيص الاولتين، و إلا فلن يعمل الامر بشكل صحيح ،
أ- في نفس نافذة موجه الاوامر الحالي
start "MTZ chkdsk" /b /wait /HIGH "%windir%\system32\chkdsk.exe" C:
http://www.w6w.net/users/28-07-2005/w6w_2005072809320318858befe3260.gif
http://www.w6w.net/users/28-07-2005/w6w_20050728094221188586cae609b.gif
ب- في نافذة منفصلة:
start "MTZ chkdsk" /wait /HIGH "%windir%\system32\chkdsk.exe" C: /f
http://www.w6w.net/users/28-07-2005/w6w_2005072809434218858ac9048c9.gif
http://www.w6w.net/users/28-07-2005/w6w_2005072809450318858b0ae7c6b.gif
_________________________________________________
5-الامر cls :
يستخدم لمسح كل ما في موجه الاوامر ، فلا يبقى شيء في موجه الاوامر
كما في الشكل:
http://www.w6w.net/users/28-07-2005/w6w_2005072809455418858f857e900.gif
http://www.w6w.net/users/28-07-2005/w6w_20050728094639188585a90c7cf.gif
_______________________________________________
استدعاء ملفات باتش أخرى صنعناها، من خلال ملف الباتش آخر
يتم ذلك باستخدام الامر Start بشكل طبيعي كالآتي: ،
start "External batch" /wait /b "batch.bat"
طبعاً اذا لم يكن ملف الباتش ، جنباً بجنب الى الباتش الرئيسي ، يجب وضع المسار بدل الاسم فقط ، مع مراعاة وضع علامتي التنصيص اذا كان اي من الاسماء يحوي مسافات ، سواء كانت المسافات في اسماء المجلدات او اسم الباتش نفسه
** عند استدعاء ملف باتش من ملف باتش آخر كاننا باختصار نكتب كل ما في ذلك الباتش ، في الباتش الذي قام بعميلة الاستدعاء
ملاحظة: لا تحاول اطلاقاً ان تشغل باتش من باتش آخر دون start
_________________________________________________
اخراج النص من امر الى ملف نصي ، :
مثلاً لو أردنا استخدام الامر dir لرؤية قائمة ملفات في مجلد ، فاننا نكتب dir مباشرة ، ماذا لو اردنا ان نحفظ هذه المخرجات الناتجة من الامر dir ، للقيام بذلك نقوم بكتابة الامر متبوعاً بعلامة "> " ثم اسم الملف النصي المراد حفظه ، و التوضيح كالاآتي:
http://www.w6w.net/users/28-07-2005/w6w_2005072809475018858d79b5c2f.gif
http://www.w6w.net/users/28-07-2005/w6w_2005072809530318858f14e3a6e.gif
dir>directory.txt
** من الممكن تحديد مسار الملف الناتج ، كأن نكتب:
dir>%systemdrive%\mobilelist.txt
طباعة ملف نصي txt: (طبعاً يجب ان يكون لديك طابعة)
يتم ذلك ببساطة باستخدام الامر :
notepad /p file!!!!.txt
طبعاً نضع اسم الملف المراد طباعته بدل file!!!!.txt ، و كما في اي امر ، يمكن تحديد المسار للملف و يجب مراعاة وضع علامتي تنصيص اذا احتوى اي من الاسماء مسافة ..
__________________________________________________ _____________
الآن بعد هذه التوضيحات ، هيا إلى هدفنا ، باتش يعطي تقرير و يقوم بطباعته:
* سنقوم بعمل ملفين ، احدهما اسمه work.bat و الآخر work2.bat
Work.bat
@echo off
REM كما ترون هذا الجزء لا يؤثر في الملف ، فمنفذ الاوامر لن يقرأ ما هو بعد هذه الكلمة
echo Welcome to another MTZ turtoial
title MTZ turtoials*system variables
rem لاحظوا،انه عند تغيير لون الواجهة نستخدم رمزين ، الاول يتم تنفيذه على الخلفية ، و الثاني على النص
color 1F
echo To Begin system report
pause
echo Reporting....
REM لانشاء ملف نصي يحوي مخرجات معينة ، نكتب الامر متبوعاً باشارة اكبر من ثم اسم الملف
REM اذا حددنا مسار تموين الملف النصي ، سيوضع في ذلك المسار ، و ان لم نحدد سيوضع في نفس مسار الباتش
MKDIR %systemdrive%\ourlog\
REM يجب ان يكون المجلد موجوداً فبل اخراج الملف اليه
start /wait /b work2.bat>%systemdrive%\ourlog\mtz.txt
rem لاستدعاء ملف الباتش start كما ترون في السطر السابق ، اسنخدمنا الامر
rem start لان الطريقة الصحيحة لاستدعاء الباتشات ، هي الامر
rem mtz.txt في الملف النصي work2.bat و طلبنا كذلك وضع مخرجات
rem و كما تلاحظون حددنا مسار الملف النصي
echo If u want to print the report *
pause
title the report will be printed in: 5
sleep 1
title the report will be printed in: 4
sleep 1
title the report will be printed in: 3
sleep 1
title the report will be printed in: 2
sleep 1
title the report will be printed in: 1
sleep 1
title Printing........
rem الآن سنستدعي أمر الطباعة
notepad /p "%systemroot%\ourlog\mtz.txt"
rem يستحسن وضع علامتي التنصيص ، حتى لو لم تكن الاسماء تحوي مسافات و ذلك لترتيب الكود
cls
title ALL DONE !!!
echo Allright *thx alot 4 using mtz turtoials
REM لا تنسونا من الدعاء الصالح
sleep 2
exit
Work2.bat
@echo off
echo \\\\\\\\\\\\\\\\\\Here ("") come ur report//////////////////
echo \\ Processor: %processor_identifier%
echo \\ No.of processors:%Number_of_processors%
echo \\ Ur !!!!!!s folder is in: %windir%
echo \\ ur profile is in: %USERPROFILE%
echo \\ ur domain:%USERDOMAIN%
echo \\ Ur pc !!!! is: %COMPUTER!!!!%
echo \\ Directory this batch was started from is: %CD%
echo \\ This report was taken by %USER!!!!% on %DATE% at %time%
خبرات من الباتش work.bat السابق :
1-الغاء اظهار الاوامر في واحهة منفذ الاوامر
2-تغيير العنوان
3-تغيير لون الواجهة
4-اظهار النصوص فقط ، دون معالجة منفذ الاوامر لها كاوامر
5-استخدام التعليقات
6-انشاء مجلد جديد
7-تشغيل برنامج او باتش من خلال باتش
8-وضع مخرجات الامر في ملف نصي
9-عمل عد تنازلي في العنوان
10-طباعة الملف باستخدام الامر notepad /p
11-مسح كل ما شاشة تنفيذ الاوامر
خبرات من الباتش work2.bat
1-استخدام متغيرات النظام فقط
2-اسلوب التفكير في ربط ملفات الباتش ببعضها البعض
رفعت لكم الدروس كاملة فى المرفقات
ahmdatef
07-03-2006, 08:39 AM
امثلة تطبيقية: المثال الاول :
الهدف : عمل قرص خاص ، عليه مجموعة من البرامج ، يتم تثبيتها بمجرد ادخال القرص .
المخطط :
1-ترتيب الملفات و المجلدات
2-عمل الباتش :
أ?-استخدام @echo لمنع اظهار الاوامر عند تشغيل الباتش
ب?-العد التنازلي باستخدام الامر Sleep
ت?-تشغيل الحزم التثبيتية باستخدام الامر Start او الطريقة التقليدية
ث?-الخروج عند الانتهاء .
3-عمل الملف : Autorun.inf المسؤول عن تحديد ما سيعمل عند ادخال القرص .
4-حرق السيدي باستخدام أي برنامج .
التنفيذ:
1-فلنبدأ بوضع تصور لشكل الملفات على القرص ، فلنفرض اننا نريد وضع البرامج الآتية :
Adaware
Yahoo Messenger
Azerues
سنضع كل البرامج في نفس مسار الباتش كي نتجنب تحديد مسار الملفات التي سيشغلها الباتش ، و بذلك نكون قد اتممنا المرحلة الاولى بشكل تمثيلي للملفات في وجه القرص ..
2-عمل الباتش:
أ-
لنفكر الآن بالباتش ، الذي سنعمله ، فكرته الاساسية بسيطة جداً ، و هي تشغيل مجموعة من البرامج بصورة متتابعة ... الاول ثم الثاني ثم الثالث ، اذا طبقنا الفكرة مباشرة سنكتب الآتي في الباتش (بفرض ان الملفات كلها بجانب الباتش ، اي في نفس مساره) :
"yahoo setup.exe"
aawsepersonal.exe
Azureus.exe
ملاحظات على الكود السابق :
1- في الكود السابق افترضنا أن الملفات توجد بجانب ملف الباتش أي في نفس مساره ، و لذلك تعمل مباشرة دونما تحديد لمسارها ، مثلها كمثل أي أمر موجود، فقد ذكرنا في الدروس السابقة ، ان الباتش عند تنفيذه لامر معين (ذكرنا ان الامر هو برنامج بالنسبة للباتش) ، يبحث عن هذا الامر (البرنامج) في المسارات الثلاث الآتية :
1- مسار ملفات النظام system32 2- مسار الوندوز 3- مسار الباتش نفسه ..
2- اذا احتوى اسم لملف على مسافة يجب وضع علامتي تنصيص ..كما هو الحال في الياهو مسنجر
ذلك سيقوم لنا بالفكرة ، فبهذا سيعمل أولاً ، تثبيت الياهو ، ثم الad-aware ثم الmsn messenger
لو فكرنا قليل في الكود السابق .. سنجد اننا لم نقم بشيء .. ما فائدة تشغيل هذه البرامج واحداً تلو الآخر ... ما دامت لا تزال تحتاج الى متابعتي الشخصية لاتمام خطوات التثبيت .. ، سنجد الجواب في الوضع الصامت للحزمات التثبيتية ، والسويتشات
الآن وقد اصبح لدينا فكرة حول السويتشات و التثبيت الصامت ... فلنعد النظر في ملف الباتش ..
لو اننا أضفنا سويتشات هذه البرامج (الاوامر) لها ، سنجد الفائدة .. فسيكون الموضوع مهم نوعاً ما و ذو جدوى فيصبح الباتش كالآتي :
"Yahoo setup.exe" /S
aawsepersonal.exe /S
Azureus.exe /S
و عند تشغيله .. سيقوم بنفس ما فام به الباتش السابق (من حيث تشغيل البرامج) ، لكن هذه المرة ستعمل البرامج في الوضع الصامت ......
ملاحظات على الكود السابق :
1-السويتش /S لا يصلح لكل البرامج ، راجع درس التثبيت الصامت ....
2-عند استخدام ملفات اسماءها تحوي مسافات نكتب الامر بحيث يكون اسم الملف بين علامتي التنصيص ، متبوع بمسافة ، ثم السويتش ... كالآتي :
http://www.w6w.net/users/04-08-2005/w6w_2005080412525018858aaaac456.gif
3- ايضاً الاسماء العادية يجب ترك مسافة بين الاسم و السويتش ، لو لم نفعل ذلك ، سيفهم منفذ الاوامر ان السويتش جزء من اسم الملف ، مثلا: aawsepersonal.exe/S ، سيفهم منفذ الاوامر ان هذه كله اسم ..
الآن أتممنا هيكل الباتش ، لكن لا يزال شكل الملف أثناء تنفيذه بدائياً ، لذلك سنقوم بواحد من الخيارين الآتيين :
1- اما ان نستخدم : cmdow @ /HID، و ذلك لاخفاء نافذة الباتش تماماً أثناء تنفيذ الملف ، و يتطلب ذلك وجود cmdow.exe في واحد من المسارات الثلاث التي أكثرنا الحديث عنها ( system32 ، الوندوز ، مسار الباتش نفسه ) .. بامكانك تحميل cmdow من المرفقات ..
الاستخدام : فقط نكتب : cmdow @ /HID و ستختفي النافذة بمجرد طهورها ..
و بالتالي يكون شكل الباتش كالآتي :
cmdow @ /HID
"Yahoo setup.exe" /S
aawsepersonal.exe /S
Azureus.exe /S
2- أن نستغل نافذة الاوامر لعرض الخطوات الحالية مع الترتيب . و ذلك بمجموعة من الاوامر :
أ- الامر : echo لاخفاء الاوامر الموجهة لمنفذ الوامر
ب- الامر:color لتغيير لون النص و الخلفية
ج- الامر: mode : لتغيير حجم النافذة ..
د- الامر : title لتغيير العنوان
ملاحظة:طبعاً ، كما هو الحال في لغتنا البسيطة هذه ، الامر ينفذ في سطره ، أي لو كتبنا مثلاً color 1F في السطر الاول ، ثم كتبنا في السطر التالي "yahoo setup.exe" /S ثم عدنا في السطر التالي لنكتب color F1 سنجد ان منفذ الاوامر سيبدأ بلون ، ثم ينفذ امر تشغيل برنامج تثبيت الياهو ، ثم يعود ليغير لون موجه الاوامر مرة أخرى و هكذا ... هذه هي ملاحظة فقط ...
الامر : mode :
يمكن استخدام هذا الامر لتغيير حجم نافذة العرض .. كالآتي :
http://www.w6w.net/users/04-08-2005/w6w_2005080412563618858c155f384.gif
** ملاحظة: الارقام في الصورة تمثل اصغر ارقام ممكنة
http://www.w6w.net/users/04-08-2005/w6w_2005080413010218858d778dda0.gif
اما عن الاوامر الاخرى ، فقد درسناها في الدروس السابقة من حيث الصياغة و الاستخدام ، الآن أعتفد ان لدينا فكرة الباتش .. و صرته مكتملة و هي كالآتي :
1-سنجعل العنوان MTZ Apps installer
2-سيكون هناك اعلام للمستخدم بالبرنامج الجاري تثبيته عن طريق الامر echo
3-بعد ما يتم تثبيت البرنامج سيكتب الملف للمستخدم رسالة : DONE!!
الآن الى التنفيذ:
لا تنسو ان rem للتعليقات ، اي ان ما بعدها يتجاهله منفذ الاوامر تماماً
REM الامر التالي لمنع منفذ الاوامر من اظهار اسماء الاوامر اثناء تنفيذها
@echo off
REM الآن نضع العنوان
title MTZ Apps Installer
REM الآن نغير حجم النافذة
mode 55*5
REM الآن نغير الألوان
Color 1F
REM الآن نبدأ بالبرنامج الاول
REM نكتب قبل بداية أمر تثبيت الياهو أمر باظهار رسالة
echo Installing Yahoo …
"Yahoo Setup.exe" /S
REM بعد ان انتهى امر تثبيت الياهو نريد رسالة اعلام بان التثبيت تم
echo DONE !!!
REM البرنامج الثاني
echo Installing Ad-Aware
aawsepersonal.exe /S
echo DONE !!!
REM الثالث
echo Installing Azerues
Azureus.exe/S
echo DONE !!
echo All DONE !!!
exit
و هكذا نكون أتممنا النقطة 2 ، الآن الى النقطة 3، وهي عمل ذلك في قرص له auto run
فكرة الAutoRun في الوندوز
هناك ملف يوضع في وجه السيدي ، اسمه Autorun.inf هو الذي يحدد البرنامج الذي سيعمل عند ادخال القرص .. بامكانك للتأكد من ذلك ان تتصفح اي قرص لديك فيه خاصية التشغيل التلقائي ، ستجد ملف autorun.inf في وجه السيدي ، و فيه المف الذي سيعمل عند ادخال القرص و ايقونة القرص ..
http://www.w6w.net/users/04-08-2005/w6w_20050804130217188588f63b733.gif
بامكاننا وضع ملفنا الذي صنعناه بدل من Setup.exe
و الايقونة المناسبة بدل WPI.ICO
و ينتهي معنا شكل الملفات في السيدي كالآتي:
http://www.w6w.net/users/04-08-2005/w6w_20050804130339188583308fc06.gif
الآن نحرق السيدي بأي برنامج مثل النيرو ، و فيه الملفات كما في الشكل
ahmdatef
07-03-2006, 08:40 AM
بسم الله الرحمن الرحيم
المثال الثاني : باتش التنظيف للنظام
مثال اليوم ، مثال بسيط جداً ، عمله كالآتي :
1-يقوم بمسح الملفات المؤقتة .
2-يقوم بتفحص قرص النظام
3-يقوم بالغاء تجزئة القرص
4-بعد انتهاء هذه العمليات ، سيقوم بإطفاء الجهاز ..
فائدة مثل هذا الباتش ..
بعد انتهاءك من العمل على الجهاز ، في ساعة متأخرة من الليل ، بامكانك عمل هذه المهمة ، حتى لا تضيع ساعات عملك في انتظار تمام هذه المهمات ..
خبرات سابقة نحتاجها من الدروس السابقة
1-الامر echo للتحكم في عرض الاوامر .
2-الامر pause لايقاف تنفيذ الملف ، حتى يضغط المستخدم زر على لوحة المفاتيح
3-الامر rem للتعليقات
4-استدعاء باتش من باتش
5-الامر start لتشغيل ملف من خلال الباتش
6-الامر chkdsk لفحص القرص
7-الامر defrag لالغاء التجزئة
8-الامر cmdow لاخفاء نافذة الباتش
9-الامر MKDIR او MD لانشاء مجلد جديد
خبرات جديدة:
1-الامر RD لالغاء مجلد ..
2-الامر shutdown لايقاف الجهاز
شرح الاوامر الجديدة :
1-RD
تناولنا في الدرس الثالث كيفية انشاء مجلد جديد و لم نعلم كيف نحذف مجلد ما ، هذا الامر يقوم بحذف المجلد .
عندما تحدثنا عن mkdir قلنا انه اذا كتبنا ،
mkdir "c:\1\2\3\4\5"
سيقوم الامر بانشاء جميع المجلدات ، 1 و 2 و 3 و4 وصولاً الى 5 ، حتى اذا لم تكن موجودة،
السؤال الآن ، اذا استخدمنا RD بنفس الطريقة .. اي كتبنا
RD "c:\1\2\3\4\5"
هل سيقوم الامر بحذف ، جميع المجلدات ... 5 ثم 4 ثم 3 وصولاً الى واحد
الجواب : لا، ذلك سيلغي فقط المجلد المسمى 5 بكل ما يحويه من مجلدات و ملفات ، اي اذا فرضنا ان المجلد 5 يحوي ، المجلدات 6 و 7 و 8 ، جميعها بداخل بعضها البعض ، ستحذف هذه المجلدات
الصيغة :
عادة ما نستخدمه بالصيغة :
RD /S /Q "path"
حيث path تمثل المسار، بحيث يكون آخر مجلد فيه ، هو المجلد الذي سيتم حذفه ، اي كما ذكرنا في شرح الامر ،
السويتشات (خيارات الامر) :
2-shutdown
يستخدم هذا الامر لايقاف تشغيل الحاسب ..
الصيغة العامة :
shutdown –s –t 00
السويتشات (الخيارات):
طبعاً كما قلنا ... بالامكان ان نستخدم اكثر من سويتش في الوقت نفسه .. لكن لا يجوز استخدام سويتشان متضاربان
كاستخدام -s مع –r لانك بذلك تطلب من الامر ان يعيد التشغيل و يوقفه في وقت واحد ... بالله عليكم كيف بيسويها.
الفكرة لعمل الباتش
سنقدم الآن فكرة عمل الباتش .. فلنبدأ بالتحليل نقطة نقطة ،
1-حذف الملفات المؤقتة :
سنقوم بذلك عن طريق ازالة المجلد تماماً ثم اعادة تكوينه عن طريق الامر mkdir ، فازالة المجلد تعني ازالة المجلد و كل ما به من الداخل ..
2-تفحص قرص النظام ..
هذه المهمة بسيطة عن طريق .. CHKDSK ، و لتحديد قرص النظام نستخدم المتغير %systemdrive%
3-الغاء تجزئة قرص النظام
هذه المهمة كالمهمة السابقة ، باستخدام الامر defrag بدلاً من chkdsk
4-اطفاء الجهاز
بسيط عن طريق الامر shutdown الذي ذكرناه ..
الآن الى العمل و طريقته ،
ترتيباً للعمل سنقسم الباتش على ملفين ، الاول ، يقوم بالمسح و اعادة التكوين للمجلدات ، و الثاني عليه الاكمال الى نهاية المهمات..
قبل ان نبدا بكتابة الكود .. يجب ان نفكر بالمجلدات التي تحوي ملفات مؤقتة لنمسحها ، حسب معرفتي هذه المجلدات هي ..
1-%userprofile%\Local Settings\Temporary Internet Files\!!!!!!!.IE5
2-%userprofile%\Local Settings\Temporary Internet Files\!!!!!!!.IE5
3-%userprofile%\Local Settings\history
4-%windir%\prefetch
5-%userprofile%\local settings\Temp\
طبعاً اذا كنت تريد مسح ملفات اخرى من خلال الباتش ، يمكن وضعها ،
الآن سنمسح هذه المجلدات ( المجلد الاخير في المسار) ، باستخدام RD ثم نعيد تكوينها بـmkdir
الآن الى العمل ، فلنكتب الكود لملف التنظيف ( المسح )
clean.bat
@echo off
@cmdow @ /HID
REM هذا هو الملف الذي سيقوم بمسح كل الملفات المؤقتة و الغير ضرورية
REM اسنستخدم امر اخفاء النافذة
REM سنعتمد فكرة بسيطة هي : ان نحذف المجلد بكل تفرعاته ، ثم نعيد انشاؤه
RD /S /Q "%userprofile%\Local Settings\Temporary Internet Files\!!!!!!!.IE5"
mkdir "%userprofile%\Local Settings\Temporary Internet Files\!!!!!!!.IE5"
RD /s /Q "%userprofile%\!!!!!!s"
MD "%userprofile%\!!!!!!s"
RD /s /Q "%userprofile%\Local Settings\history"
MD "%userprofile%\Local Settings\history"
RD /s /Q "%windir%\prefetch"
MD "%windir%\prefetch"
RD /S /Q "%userprofile%\local settings\Temp\"
MD "%userprofile%\local settings\Temp\"
rem انتهى دور باتش التنظيف
الباتش الرئيسي ( الثاني ) سنسميه main هذا هو ..
main.bat
@echo off
echo Welcome TO MTZ system cleaner
echo the cleaner Will clean temprory files * then check your system disk * defrag it *then shutdown ur PC to proceed *
pause
rem حتى نشغل الباتش startنستخدم الامر
start "" "clean.bat"
rem الامران الآتيين ، تم مناقشتهما من قبل ،
rem كما ترون ، استخدمنا متغير قرص النظام
chkdsk %systemdrive%
defrag %systemdrive%
rem هذا هو الامر الجديد المختص بايقاف تشغيل الجهاز
shutdown -s -t 0
طبعاً التشغيل يكون من الباتش، main.bat و يجب مراعاة وجود clean.bat في واحد من المسارات الثلاث التي طالما تحدثنا عنها ، و للتاكيد هي
1-!!!!!!s
2-system32
3-مسار الباتش
هكذا نكون اتممنا المثال الثاني .
ahmdatef
07-03-2006, 08:41 AM
بسم الله الرحمن الرحيم
المثال الثالث : حول عمليات الملفات ، النقل ، النسخ
خبرات سابقة :
ممم .. اعتقد اننا مش حنستخدم حاجة قديمة بس حنحتاج فهمنا للباتش سكريبت ...
خبرات جديدة :
1-الامر move
2-الامر Xcopy و الامر copy
3-التعامل مع الملفات حسب النوع و الخواص ،، ما يسمى : wildcards
شرح الاوامر :
الامر move :
يستخدم لنقل مجلد او ملف من مكان الى آخر ، صيغته كالآتي :
move "الملف او المجلد المراد نقله، مع المسار بدقة" "المسار الذي سيتم النقل اليه"
اليكم المثال الآتي للتوضيح ..
لدينا الملف file1.doc ، موجود على سطح المكتب للمستخدم الحالي ، اي :
http://www.w6w.net/users/18-08-2005/w6w_200508180757511885885f36986.GIF
هذا هو مسار الملف الاول بدقة .. لو اردنا نقله الى القرص d:\ في مجلد موجود مسبقاً اسمه folder ، اي ان مسار هذا المجلد هو d:\folder ، فاننا نكتب الآتي ،
http://www.w6w.net/users/18-08-2005/w6w_2005081807584218858fa8d150d.GIF
هكذا ينتقل الملف file1.doc الى المسار d:\folder ، اي سنجد الملف في المجلد folder الموجود في القرص d: ، و لن نجده بعد الآن في المسار السابق ...
السويتشات :
/Y يستخدم لمنع ظهور الرسالة التاكيدية عند استبدال الملف او المجلد اذا كان موجود في المسار الجديد
ملاحظات :
1-يجب تحديد اسم الملف المراد نقله مع الامتداد ، اي انه لا يكفي ان نكتب file1
2-اذا كان المراد نقله مجلد ، طبعاً لن نكتب الامتداد (ما عمريش شفت مجلد لو امتداد)
3-احياناً تكون النقطة جزء من اسم الملف و ليست امتداده ، مثلاً : Moataz.part11.rar نلاحظ ان الامتداد هو rar و ليس part11 ، فالامتداد الحقيقي للملف هو آخر نقطة متبوعة بمجموعة احرف ،
4-طبعاً لن ننسى ذكر اهمية وضع علامتي التنصيص ، عند التعامل مع اسماء تحوي مسافات
5-لو اردنا ان ينتقل الملف الى المسار الجديد ، و لكن باسم آخر ، نكتب :
http://www.w6w.net/users/18-08-2005/w6w_2005081808002118858e97a0584.GIF
بذلك بعد ان ينتقل الملف الى المجلد folder سيتم تغيير اسمه الى file1re!!!!d.doc ، و اعود لاكرر و اؤكد ضرورة وضع الامتداد ، فلو انا لم نضع في المسار الجدبد الامتداد .doc سنحصل على ملف عديم النوع
الامر xcopy و copy ،
يستخدم لنسخ مجلد او ملف ، صيغته العامة :
للملفات:
xcopy "الملف المراد نسخه مع المسار بدقة" "الملف الذي سيتم نسخ بيانات الملف المنسوخ اليه"
http://www.w6w.net/users/18-08-2005/w6w_20050818080102188585b8c48ed.GIF
مثال :
هذا الامر سيقوم بنسخ الملف file1 من سطح مكتب المستخدم الحالي ، الى المجلد folder ، باسم file1copied.doc ، ليس file1.doc ،
سويتشات الأمر xcopy،
http://www.w6w.net/users/18-08-2005/w6w_20050818080358188587a06e8b4.gif
توضيح عملية النسخ ،
ذكرت انا عبارة " الملف الذي سيتم نسخ بيانات الملف المنسوخ اليه" ، الجملة تبدو مبهمة نوعاً ما لمن لا يعلم خطوات النسخ للملف ، ما يحدث عند تحديد "اسم الملف الذي سيتم نسخ بيانات الملف المنسوخ اليه" ، عند بداية عملية النسخ ، فإن اول ما يحدث هو انشاء ملف حجمه 0 ، بالاسم الذي حددناه في الامر (file1copied.doc ) ، ثم يبدأ نقل البيانات من الملف الاصلي الى الملف الجدبد ...
** سنلاحظ عند استخدام الامر Xcopy لنسخ ملف بالطريقة السابقة ، سيقوم موجه الاوامر بسؤال المستخدم ، إذا ما كان الاسم file1copied.doc اسم ملف او مجلد ، كما في الصورة :
http://www.w6w.net/users/18-08-2005/w6w_200508180805051885875edf3c6.GIF
إذا كنت لا تحبذ ، ذلك ، بامكانك استخدام الامر Copy ، فهو مخصص لنقل ملف واحد فقط ... و يتميز الامر copy بخيارات متقدمة ، كتحديد نوع عملية النقل للبيانات .. هل هو نظام !!!! أو binary ، أو دمج ملفين في ملف ، و هذه الخيارات ، عادة لا نحتاجها ، الا في حالات نادرة جداً ..
====================== المثال العملي ======================
الحالة:
لديك في حاسبك قرصين ، C و D
تريد ان تنسخ ملفات المستندات على القرص D ، كذلك تريد إعادة تنظيم مجلد المستندات المكتظ بشتى أنواع الملفات (EXE*PPT*DOC*MDB*ZIP*RAR*MP3* ….) بحيث يكون كل نوع في مجلد خاص ...
لنبدأ الآن بتقسيم المهام :
1-نسخ الملفات
2-إعادة التنظيم للمجلد الجديد بعد النسخ و تتضمن :
a.إنشاء مجلدات باسماء مختلفة ، باستخدام MKDIR
b.استخدام الامر move لنقل الملفات مع الاعتماد على الامتدادات (wildcards)
1-نسخ الملفات:
سنقوم بذلك باستخدام الامر Xcopy لنسخ مجلد المستندات (my !!!!!!!!s ) بأكمله إلى القرص D: ، و بذلك نكتب ...
http://www.w6w.net/users/18-08-2005/w6w_20050818080646188581f51aad1.GIF
2a ، إنشاء مجلدات حسب النوع باستخداك MKDIR
http://www.w6w.net/users/18-08-2005/w6w_2005081808084618858c9660bc7.GIF
2b، استخدام الامر move لنقل الملفات مع الاعتماد على الامتدادات (wildcards)
بامكاننا الاعتماد على نوع الملف ، او وصفه ، او امتداده لفصل الملفات حسب نوعها ، كالآتي:
http://www.w6w.net/users/18-08-2005/w6w_20050818081008188588358db0f.GIF
هذه الاوامر ستنقل كل نوع الى مجلد ، فستجد كل ملفات powerpoint في مجلد PowerPoint ، طبعاً فرضنا أنه منشأ أصلاً
هكذا نكون اتممنا المثال الثالث
ahmdatef
07-03-2006, 08:41 AM
بسم الله الرحمن الرحيم ...
الدرس الرابع ....
1-المتغيرات في الباتشات ، و التعامل معها .....
2-الجمل الشرطية if
3-العلامات (labels) ....
درس اليوم ، كبير نوعاً ما ... سنتناول فيه كثير من الأمور ... التي تعتبر نواة قوة الباتش سكريبت و التعامل معها ... فحتى الآن ، كل تعاملنا مع الباتش سكريت ، لم يتعدى استخدام أوامر و سويتشاتها ... لكن الآن ، سنتعدى ذلك ، لنتعامل مع المتغيرات و الجمل الشرطية و العلامات ... و الآن فلتبدأ بشرح المتغيرات ...
1-المتغيرات
كما ذكرت سلفاً في درس "متغيرات النظام" أن كل متغير يتم ترجمته إلى قيمته عند كتابته بين علامتي "%" ، فإن المتغيرات العادية ينطبق عليها نفس الشيء .. فمثلاً متغير "قرص النظام" الذي هو ، systemroot ، عندما نريد الحصول على قيمته في ملف باتش و استخدامها نكتب ... %systemroot% ، و يتولى موجه الأوامر ترجمة المتغير إلى القيمة المناسبة ... سواءً كانت c او d او e ...الخ ... ، و بالتالي سيصبح الباتش قابل للعمل على كل الأجهزة ، أي ليس مقتصراً على الإجهزة التي تحوي النظام(ويندوز) في القرص : C ...
*** نحتاج إلى استخدام المتغير " systemroot" إذا أردنا القيام بنسخ ملف إلى مسار النظام ... او ما شابه ذلك
الامر الذي نستخدمه لإنشاء متغير هو الامر Set ..
صيغته ..
set variable = value
حيث اسم المتغير : variable
و قيمته هي قيمة نصية : value
لاستخدام المتغير variable في أي مكان من ملف الباتش .. نضع اسمه بين علامتي "%" ، كالآتي
%variable%
فإينما كتبنا في ملف الباتش هذا المتغير بهذا الشكل ، فسيتم ترجمته إلى القيمة value
لكن .. لنفرض أننا نريد أخذ قيمة المتغير من المستخدم .. أي أردنا أن نعلم .. ما القيمة التي أدخلها المستخدم لنتعامل معها ...
سنقوم عندها باستخدام سويتش خاص هو السويتش : /P و بالتالي تصبح صيغة الأمر ..
set /p variable=ur string
بالعربي
http://www.w6w.net/users/22-08-2005/w6w_20050822052639188582299a3e5.GIF
فمثلاً ما كتبناه أعلاه ، عند وضعه في باتش ،فإنه عند تنفيذه ، سيظهر للمستخدم عبارة "ur string" * بعدها يكتب ما يريد .. و عند ضغطه Enter ، سيتم تحويل ما أدخل إلى قيمة المتغير variable ..
2-الجمل الشرطية if
عادة ما يكون استخدامها مع المتغيرات ، فمثلاً لو كان المتغير قيمته (س) ، افعل الامر الآتي ..
و لها استخدام آخر ، حيث يتم عمل الامر المطلوب .. إذا كان ملف موجود ، كما أن لها استخدام عكسي ، هو if not ، إي إذا كانت العبارة غير صحيحة ... و بشكل عام صيغة الأمر if
if %variable% == string command
حيث :
string:القيمة التي يجب أن يمثلها المتغير لتصبح العبارة صحيحة و يتم تنفيذ الأمر command
command: الامر الذي سيتم تتنفيذه
و هناك استخدام خاص ..حيث إذا كانت العبارة غير صحيحة ، فإن الأمر سيتم تنفيذه .. أما إذا كانت صحيحة فلن يتم تنفيذه ، هذا الاستخدام ، يتم بوضع كلمة not
if not %variable%== string command
في هذه الحالة .. سيتم عمل الأمر command طالما أن الجملة غير صحيحة ، فإذا كانت صحيحة ،لن يتم التنفيذ مثلاً إذا كانت القيمة الفعلية لvariable في كل من الحالات الآتية فإن الأمر command سيتم تنفيذه ..
variable : sdksgm
variable : faryh
variable :damas
variable :mtz
و هناك حالة وحيدة لن يتم تنفيذ الأمر command فيها .. هي :
variable : string
أقصد إذا كانت قيمة variable هي "string"
استخدام if exist
استخدام هذا الأمر يتم بالتحقق من وجود ملف معين ... فمثلاً إذا أردنا من الباتش أن يحذف الملف file.doc إذا وجده .. نكتب
if exist file.doc del file.doc
و قد نحتاج في بعض الأحيان إلى استخدام
if not exist
مثلاً نريد أن يقوم الباتش بنسخ ملف معين إلى النظام... فقط إذا لم يكن موجود فيه فيكون
if not exist %systemroot%\system32\mtz.cpl copy "%CD%\mtz.cpl" "%systemroot%\system32\mtz.cpl"
** الامتداد .cpl يمثل عناصر التحكم الموجودة في لوحة التحكم ، فمثلاً ، appwiz.cpl ، هو عنصر إضافة و إزالة البرامج ، و هكذا فإن أي عنصر في لوحة التحكم ، له ملف cpl خاص في مجلد system32
و طبعاً بإمكاننا استخدام أي أمر غير الأمر copy ، بما يناسب احتياجنا ...
3-العلامات labels
تستخدم العلامات لتقسيم الكود الذي نكتبه و التحكم به ، فمثلاً الكود الآتي مقسم إلى 4 علامات ..
يتم تحديد علامة (label) بوضع نقطتين رأسيتين قبل الكلمة ..
http://www.w6w.net/users/22-08-2005/w6w_20050822054318188587cffa284.GIF
@echo off
:label1
echo this is label 1
:label 2
echo this is label 2
:label 3
echo this is label 3
:label 4
echo this is label 4
إذا كتبنا الكود الآتي في ملف باتش .. لن نجد أي فرق بينه و بين الآتي ، فهو يتنفذ سطراً سطراً كما هو الحال مع هذا الباتش ..
@echo off
echo this is label 1
echo this is label 2
echo this is label 3
echo this is label 4
لكن لنرى الفرق ، يجب أن نتعلم استخدام الأمر goto ...
يستخدم الأمر goto للتنقل بين العلامات ، فمثلاً لو كتبنا ..
goto label 3
ذلك سيقوم بالقفز إلى السطر الذي يحوي العلامة label 3 ، فمثلاً لو وضعنا السطر :goto label 3 في نهاية العلامة label 4 ، سيتم القفز عندها إلى العلامة label3 ، ة هكذا ، فستكون النتيجة ملف باتش غير منتهي كما في الصورة
http://www.w6w.net/users/22-08-2005/w6w_2005082205142118858bcc3a047.gif
الآن إلى التنفيذ :
حتى الآن نا تعلمناه ، هو كيفية استخدام هذه الاوامر .. و لم نرى استخدام حقيقي .. الآن سنحاول عمل باتش يجمع كل ما تعلمناه اليوم ..
لنبدأ ..
الباتش الذي سنصنعه ، هو قائمة تمكن المستخدم من اختيار واحد من اثنين ، إما أن يقوم بتفحص القرص الصلب ، أو إلغاء التجزئة ... و هذا هو
http://www.w6w.net/users/22-08-2005/w6w_2005082205474018858c23da4fc.GIF
@echo off
rem علامة البداية
:begin
cls
echo Welcome To MTZ system tools
echo 1-Run DiskDefrag
echo 2-Run Chkdsk
echo 3- Exit
rem السطر الآتي ينشئ متغير و يطلب قيمته من المستخد
set /p userchoice=Please Enter then press enter
rem الآن سنتعامل مع ما أدخله المستخدم
rem إذا كان ما أدخله المستخدم هو الرقم 1 فان المتغير ستصبح قيمته 1 و تتحقق الجملة التالية ويتنفذ الأمر
if '%userchoice%' == '1' defrag %systemdrive%
rem بعد أن قام موجه الأوامر بمعالجة الجملة الشرطية أعلاه سواء كانت تنفذت أم لا ، سيعود لمعالجة السطر الآتي (الجملة الشرطية
if %userchoice%==2 chkdsk %systemdrive%
if %userchoice%==3 exit
rem الآن يجب أن يكون ما طلبه المستخدم قد تم .. لذلك بعد سيكون هذا السطر إعادة للباتش من بدايته حتى يختار المستخدم إذا ما أراد الخروج
goto begin
بعد النهاية ...
قد يكون الكثيرين حتى الآن لم يروا فائدة حقيقية للباتش سكريبت .. فاٌقول لهم .. استخدام الباتش سكريبت .... و فائدتها ، تظهر عند الحاجة إليها .. لا بد أن تمر بمشكلة تقنية تحتاج فيها إلى باتش يسهل عملك ... و كذلك الحال بالنسبة لما تعلمناه من أوامر ،
و حتى إذا لم تكن قد استفدت عملياًُ من الباتش سكريبت ... فقد علمت فكرة عمل كثير من الأشياء في الوندوز ... و أسلوب التعامل مع الاوامر التي تعتمد على الواجهة الحرفية
CUI (characters user interface)
مثل الدوس ..
mm20010
09-16-2006, 02:08 AM
بسم الله الرحمن الرحيم
مشكور يا الغالي على الموضوع الحلوو
والله ماقصرت اخوي وبيض الله وجهك
تسلم يا مميز على الموضوع الحلوو
mo_sheko
09-16-2006, 09:56 AM
تسلم يا مميز على الموضوع الحلوو
مشكور يا الغالي على الموضوع الحلوو
الكــوت™
09-17-2006, 10:44 PM
نورت القسم بمواضيعك الشيقة والجميلة الف شكر اخوي
bakr80
12-10-2006, 12:14 PM
مشكور طال عمرك ماتقصر
محمود797
01-10-2008, 08:54 PM
هذه الدورة الرائعة فى الباتش سكريبت و كيفية التعامل مع أوامرها لا غنى عنها لكل من يريد احتراف العمل مع الحاسوب و قد كتب تلك الدورة أخ عزيز و هو الأخ معتز فجزاه الله خيرا و قد وافق مشكورا على نقل تلك الدروس إلى منتدانا العزيز و لا يريد إلا دعوة صالحة فى ظهر الغيب
بسم الله الرحمن الرحيم
وضعت الاكواد في مربعات الاكواد حتي تتمكنو من النسخ و اللصق لها بسهولة، لكنها لا تظهر كما يجب .. لذلك ستجدون في بعض الدروس ، الاكواد على شكل صور ..
=============================================
الدرس الاول :
1- مقدمة حول الباتش سكريبت
2- باتش بسيط : Hello paint
3- شرح لبعض الاوامر
الدرس الثاني:
1- فكرة اكبر عن عمل ملفات الباتش
2- الاوامر و سويتشاتها
3- تشفير ملف الباتش ، حتى لا يستطيع أحد العبث في الملف بعدك
4- مقدمة في متغيرات النظام
الدرس الثالث :
1-متابعة متغيرات النظام
2-استخدام التعليقات ، و تغيير لون منفذ الاوامر، و انشاء مجلد جيد و اوامر اخرى
3-استدعاء باتش من باتش
4-عمل الملفات النصية من الباتشات و الاوامر ، و طباعتها
أمثلة تطبيقية :
باتش لتثبيت مجموعة من البرامج تثبيت صامت تماماً
باتش التنظيف للنظام
- حول عمليات الملفات ، النقل ، النسخ
الدرس الرابع ....
1-المتغيرات في الباتشات ، و التعامل معها .....
2-الجمل الشرطية if
3-العلامات (labels) ....
مجموعة من الأوامر السحرية :
أوامر تقوم بأغراض متعددة .. غير موجودة في الوندوز ..
بسم الله الرحمن الرحيم
أولاً: مقدمة حول الباتش سكريبت :
هي لغة بسيطة ، تعتمد في تركيبها على أوامر موجودة أصلاً في نظام التشغيل ، تستدعي هذه الاوامر على شكل سلاسل متتابعة ، مما يختصر الوقت و الجهد ، فمثلاً ، لو اأننا في شبكة ، و على كل حاسب مجلدات موجودة في المستندات(Mydocs) و موجودة في C: و نريد نقل كل هذه الملفات إلى D: لاننا سنمسح الاجهزة جميعاً ، سيكون من الصعب علينا التوجه الى كل حاسب و القيام بهذه الخطوات ، مرة تلو الاخرى ، فبدل ذلك ، نصنع ملف باتس سكريبت ، يقوم بذلك بمجرد تشغيله ، و نشاركه على جميع الحواسيب ، و بدل أن نذهب الى الحواسيب واحداَ واحدً ، نطلب من العمال تشغيل هذا الباتش من النت وورك ، و بذلك سنوفر الكثييييير من الوقت.
أي أن الهدف الرئيسي منها ، الاختصار في تنفيذ المهمات ، و توفير الجهد و الوقت
الدرس الأول : برنامج بسيط (Hello Paint):
في هذا الدرس ، سنعمل ملف باتش ، يقوم بتشغيل برنامج الرسام ، و يكتب عبارة (Hello paint) ، و عند انتهاء برنامج الرسام ، سيكتب :Good bye paint، Enjoy real_mtz turtoials و خلال الدرس سنتعارف على الاوامر الخاصة بالتعامل مع الواجهة البسيطة للمستخدم ، من:
1-البداية
2- كيفية اظهار مخرجات على الشاشة ،
3- استدعاء برامج مدمجة في الوندوز (اي موجودة في مجلد الوندوز @@@@@@s او system32)
1-كيف نبدأ ،
سنستخدم محرر النصوص الموجود مع الوندوز (notepad) ، لكتابة السكريبتات ، و عند الحفظ نحفظ الملف بامتداد .bat او .cmd اي نضيفهما بعد الاسم الذي نريده
الآن لنبدأ مع الباتش فايل الصغير الذي نريد ان نصنعه كاول مثال ، شغل الnotepad (لو لا تعلم كيف تشغلها ، اعتقد ان الموضوع لا يناسبك) و اكتب الآتي
@echo off
title hello paint batch by real_mtz
echo helloooo Mr.paint
c:\@@@@@@s\system32\mspaint.exe
echo goodbye paint
pause
Exit
، ثم احفظه بامتداد .bat كما في الصورة
http://img394.imageshack.us/img394/9071/51tb2uu.gi f
ثم شغله ، و لاحظ ما يقوم به البرنامج ، و الآن لنحلل ما يقوم به ، خطوة بخطوة:
في السطر الاول نجد الأمر @echo off ،
شرحecho off@:
وظيفة هذا الامر هو ان يخبر موجه الاوامر بان يتجاهل الكلام المكتوب (الاوامر) أي لو اننا كتبنا في الملف اسم برنامج او ملف او اي شيء غير النصوص الظاهرة التي نحدد نحن ظهورها ، لن تظهر .
title
هذا الامر يحدد عنوان النافذة التي سيعمل فيها الباتش فايل
echo
echo ALooooooooهذا الامر وظيفته اظهار الكلام الذي نختاره على الشاشة ن فعندما نكتب
aloooooooooooسيطبع كلمة
و هو الجزء الوحيد الذي يظهر ، من الكلام الذي نكتبه في الباتش فايل ما دمنا استخدمنا @echo off
c:\@@@@@@s\system32\mspaint.exe
هذا اسم البرنامج الذي شغلناه ، فكما قلنا ان اساس الباتش سكريبت ، الاعتماد على مكونات النظام ،
فنحن شغلنا الملف من النظام نفسه ، ولو انا كتبنا اسم اي ملف آخر فان هذا الملف سيعمل ، باختصار ، بامكاننا تخيل انفسنا اثناء كتابة الباتش فايل ، اننا نتعامل مع الدوس ، فاثناء تعاملنا مع الدوس نكتب اسم البرنامج ليشتغل، و كذلك في الباتش فايل ، لكن تذكر ان الأوامر تعالج سطراً سطراً فلو اننا اردنا تشغيل اكثر من برنامج واحداً تلو الآخر ، سنكتب الاسماء كل واحد في سطر ، و بالتالي ، تعمل حسب الترتيب اللي هي مرتبة في داخل الباتش فايل، قد يتساءل أحدكم ، لو انني أشغل الباتش من مصدر متغير المسار (قرص ليزري) كيف ساحدد مسار البرنامج ، الجواب ببساطة هو انا تكتب اسم الملف فقط دون المسار ، و تراعي ان يكون الملف الذي استدعيته من ملف الباتش في نفس مسار الباتش فايل ، أي بجانبه ،
و كذلك لو اردت الباتش فايل أن يتعامل مع ملفات النظام او يشغل احدها بامكانك استعمال متغيرات النظام التي سأغطيها لاحقاً ، او ان تكتب اسم البرنامج ليعمل فوراً ، كما في dxdiag.
echo
مرة اخرى استخدمنا echo لاظهار كلمات على الشاشة
pause
هذا الامر يوقف تنفيذ الباتش فايل ، الى ان يقوم المستخدم بضغط اي زر على الكيبورد ، ثم يتابع النظام تنفيذ محتويات هذا الملف بعد ان يضغط المستخدم اي زر .
exit
هذا الامر كما هو واضح ، ينهي الباتش فايل و يغلقه
لاحظ ان الملف يتم تنفيذه سطراً بسطر ،
كما رأيتم ، هذه لا تستحق ان تسمى لغة برمجة لكن بامكانها تنفيذ مهمات جميلة و خدع و حيل كثيرة ، خصوصاً بتعاونها مع مكونات النظام و البرامج الاخرى (هي اصلا ليست الا اعتماد على البرامج و مكونات النظام العامة) ، و سنغطي ذلك في الدروس القادمة باذن الله
مشكووووووور
محمود797
01-10-2008, 08:59 PM
مشكوووووووووور
mghol2003
03-18-2008, 03:50 PM
مشكووووووووووووووووووووووووور
ehab_m
05-03-2008, 12:14 AM
مشكور يا الغالي على الموضوع الحلوو
Powered by vBulletin Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd