زهير طه

84

9,733

الدرس 10 █▓▒░ دورة كتابة الملفات الدفعية : التعامل مع العمليات processes


التعامل مع العمليات في الملفات الدفعية




السلام عليكم ورحمة الله و بركاته

نعود لإكمال السلسلة التي بدأنا بها و هي دورة برمجة و كتابة الملفات الدفعية
و أعتذر عن التأخر في اصدار هذا الدرس بسبب انشغالي و ظروف الدراسة
اليوم سنتكلم عن العمليات processes و الأوامر التي تلزمنا للتعامل معها :

تعليمة taskkill


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




وبعدها يمكن الضغط بالزر اليمين على أي عملية ثم اختيار إنهاء العملية



و لكن نحن يهمنا الطريقة التي تتم عن طريقة ملف دفعي batch file
و الأمر الذي سنستخدمه هو taskkill و كما تعودنا في الدروس السابقة هناك متغيرات
تستخدم مع التعليمة و اختصاراً للتعقيدات سنهتم بأهم طرق استخدام هذه التعليمة

لنفترض أننا فتحنا برنامج المفكرة notepad و نريد إنهاء هذه العملية عن طريق ملف دفعي و إغلاق المفكرة

سنستخدم لأداء هذه المهمة الأمر التالي :
taskkill /f /im notepad.exe
و هي الطريقة الأكثر شيوعاً و استخداماً مع العمليات
و المتغيرات التي استخدمناها هي
f = forcefully أي لإنهاء العملية بشكل قسري
im = image name و هي لاستخدام اسم العملية كما فعلنا في مثالنا حيث كتبنا اسم العملية و هو notepad

و يمكن معرفة اسم أي عملية مفتوحة من خلال إدارة المهام و عادة يكون اسم العلمية هو اسم الملف الذي نشغله حتى يفتح البرنامح

مثال آخر :


كود إنهاء برنامج fire fox متصفح الانترنت
 taskkill /f /im firefox.exe

ملاحظة :


قد يكون اسم أحد العليمات أكثر من كلمة و عندئذ نستخدم قوسي التنصيص
taskkill /f/im "ava find.exe"
طريقة أخرى لاستخدام التعليمة :
لإنهاء عمليات عن طريق معرفة عناوينها process ID
طريقة قليلة الاستخدام لكن لنذكرها حتى نعرفها
مثال :
لإنهاء العملية التي قيد التشغيل و التي عنوانها 1296 نكتب الأمر :
taskkill /f /pid 1296
لا شك أن هناك غموض عن هذا الرقم 1296 و من أي جاء و ما هو
لنشرح ذلك
أولاً قم بتحميل البرنامج التالي اسمه ProcX
الحجم 55 ك ب
رابط التحميل :
download
أو :
http://www.multiupload.com/5KPMZ33KT0

الآن شغل البرنامج
و سترى العمليات كافة التي تعمل مع أسمائها وعناوينها :



مثا ل ثاني
لإنهاء العملية snagit32.exe
يمكن استعمال أحد الطريقتين

taskkill /f/im snagit32.exe
أو
taskkill /f /pid 3424
= يمكن أيضاً معرفة عنوان أي عملية بدون برامج وسيطة عن طريق تعليمة tasklist المشروحة في هذا الدرس في الأسفل

مساوئ هذه الطريقة :


إن عنوان العملية متغير كلما تم فتح البرنامج
مثلاً في المثال السابق كان عنوان العملية 3424 و عند إغلاق البرنامج و فتحه سيأخذ عنوان آخر

ملاحظة :
لإنهاء عملية من عمليات النظام و التي لم ينجح انهاؤها مع المتغير /f/im
نستخدم الكود التالي :
taskkill /s xxx.exe
حيث xxx حسب اسم العملية
و هذه قليلة الاستخدام


تعليمة tskill


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

طريقة إنهاء كافة العمليات المفتوحة processes عن طريق هذا الأمر
tskill /a *
وبعدها سيعمل سطح المكتب و سنجد أن هناك عداداً لإيقاف تشغيل الكمبيوتر
ويمكن إلغاء هذا العداد بكتابة الأمر
shutdown -a
يكتب في قائمة ابدأ ثم تشغيل
أو في اختصار
أو في ملف دفعي
وعند تنفيذه سيلغى العداد
( سنذكرها بشيئ من التفصيل لاحقاً )

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

تعليمة tasklist


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


يمكن عدم إظهار السطر الأول بكتابة التعليمة كالتالي :
tasklist /nh
لتشغيل العمليات من خلال الملفات الدفيعة نستخدم :

الأمر call



رأينا في التعليمات السابقة كيفية إنهاء و إغلاق العمليات
و لكن كيف يتم تشغيل البرامج و العمليات في الملفات الدفعية ؟

لنشرح من خلال مثال :
call "C:\Program Files\Babylon\Babylon-Pro\Babylon.exe"
في هذا الأمر يتم تشغيل برنامج Babylon
حيث وضعنا بين الأقواس " " مسار البرنامج مع اسمه و امتداده الكامل

و بالنسبة للعمليات الأساسية في النظام يكفي وضع اسم الملف التنفيذي للبرنامج
مثال :
لتشغيل برنامج الرسام نكتب
call mspaint
وكما لاحظتم يكفي الاسم بدون الامتداد أيضاً

و لا أخفيكم سراً أنه يكفي كتابة اسم البرنامج
أي لتشغيل برنامج الرسام يكفي أن نكتب في ملف دفعي الأمر التالي
mspaint
وذلك فقط في العمليات التابعة للنظام
أي التي توجد ملفاتها في المجلد system و system32 و windows

تطبيق :


اكتب برنامجاً يقوم بإنهاء مستكشف ويندوز explorer ثم يقوم بتشغيله

لاحظتم في الدرس الماضي كيف احتجنا لمثل هذا الأمر من أجل تطبيق تغييرات محرر التسجيل registry بدون أن نقوم بعمل تسجيل خروج أو إعادة تشغيل
ويمكن كتابة الكود بالطريقة التالية
taskkill /f /im explorer.exe
call explorer.exe
ويمكن كتابة الكود بطريقة أفضل مع تعليمة اسمها start
taskkill /f /im explorer
@start "" /i explorer
وهذه أنصح بها
بالنسبة لتعليمة

start

احفظوا هذه الصيغة لاستعمالها مع تطبيقات النظام فهي أفضل من call
و المتغيرات هذه هي الأمثل

ختاماً :


بقي أمر أخير أود ذكره وهو أن نقوم بزيادة تعيين أفضلية برنامج ما لإعطائه المزيد من موارد النظام
حتى ما يعلق قبل غيره بحال حدثت مشكلة في الكمبيوتر وعلق
لنحلل الأمر التالي :
start /high c:\windows\notepad.exe
لمزيد من المعلومات حول تعيين الأفضليه تفضلوا بزيارة هذا الموضوع :
http://www.tahasoft.com/vb/showthread.php?t=1879
شرحت فيه مسبقاً عن الاستفادة منها بعيداً عن الملفات الدفعية

شو رأيكم اليوم أن لا نضع وظيفة
لأي استفسار أنا في الخدمة
و السلام عليكم

التعليقات (14)

زهير طه     
يمكن وضع ملف في منطقة بدء التشغيل على المسار التالي
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
في محرر التسجيل و طبعأً يمكن كتابة ملف دفعي يقوم بالعمل
ولمزيد من المعلومات عن الطريقة يمكن الاستفادة من الدرس 9

و بالنسبة لملف autoexec.bat بصراحة لم أجد أن له تلك الفائدة
وربما كثر الحديث عنه في المنتديات لسببن
- النقل بشراهة من منتدى لمنتدى دون معرفة مصداقة المحتوى و عمله
- و أيضاً يبدو أن autoexec.bat ذو كفاءة أفضل مع أنظمة التشغيل القديمة ما قبل XP

و ربما كلامي غير صحيح و إذا عندك معلومات دقيقة عنه ياريت تفيدنا
AMER.MHD-BAT     
موضوع اكثر من رائع
بس في سؤال كيف استطيع وضع ملف دفعي في قائمة بدأ التشغيل للوندوز
او بمجلد الستارت اوب بدون معرفة المستخدم
بتمنى تنزل موضوع عن ملف autoexec.bat بالتفصيل
eyesamk     
معلم والله معلم
bio_alg     

السلام عليكم جميعا

أخي طه

هذا الإبداع ليس بغريب عنك

أتمنى أن يحفظك الله ويرعاك بعنايته ويبارك فيك

تحياتي لك وعيد سعيد إن شاء الله


زهير طه     
ننتقل الآن للأخ عبد الناصر الخمايسة
بداية أهلاً وسهلاً بك بيننا
بالنسبة لتعليمة tskill هي لا تعمل مع windows 7
و أنا جربتها حين كتبت الدرس مع نظام sp2 و كانت تعمل
و بالنسبة للتعامل مع الملفات المضغوطة من خلال الملفات الدفعية صار الدرس قريب
سيتم الشرح ان شاء الله
زهير طه     
كود الأخ cargem يقوم بإيقاف تشغيل مستكشف ويندوز تشغيله
و لكن لا داعي لكتابة السطر
 pushd "c:\windows\" 


زهير طه     
أخي جليلو بالنسبة للملفات الغير قابلة للحذف يمكنك مراجعة المقال المكتوب هنا على موقع مايكروسوفت
http://support.microsoft.com/kb/315226/

و أضيف
الكلمات التالية :
CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN, NUL
تعتبر أسماء محجوزة في النظام
و لذلك لا يمكن بالطريقة العادية إشاء مجلد بأحد تلك الأسماء
أما عن طريق الدوز dos أو الملفات الدفيعة bat بكتابة الامر التالي إنشاء مجلد بأي من تلك الأسماء
و التعلية هي
mkdir \\.\e:\con

بس النظام ما رح يتعامل مع المجلد بشكل طبيعي مثلاً ما بتقدر تقتحه من Run ..
ما بتقدر تحط فيه ملفات ..
أحياناً النظام بيتعامل معه على اساس انه ملف ..
وما بتقدر تقصه وتنسخه وما بعرف شو
وطبعاً ما بتقدر تحذفه بشكل اعتيادي ..

لذلك استخدم التعليمة التالية لإزالة المجلد con اللي انشأناه بالطريقة الأخيرة ..
rmdir \\.\e:\con

طبعاً انا اخترت السواقة E لانشاء المجلد المذكور .. وممكن أي سواقة خارجية او مجلد داخلي..

و أضيف الاقتباس التالي :


على سبيل المثال الأمر COPY في النظام DOS له الصيغة المشهورة التالية:
COPY SOURCE_FILE DESTINATION_FILE
وفي بعض الكلمات المفتاحية في النظام DOS متل ما تفضل الأخ فراس
هذه الكلمات عادة تستخدم لتسهيل تحقيق خدمة معينة أو لإضافة خدمة ما لأمر ما
فمثلاً الكلمة CON تمثل خرج الشاشة أو ملف خرج الشاشة
ومنه نستطيع أن نستخدم الأمر COPY كالأمر EDIT مثلاً كما يلي:
COPY CON A.TXT
ومعناه نسخ كل ما تكتبه على الشاشة إلى الملف A.TXT
وبالمثل يمكن استخدام الأمر COPY كالأمر TYPE كما يلي:
COPY A.TXT CON
ومعناه نسخ محتويات الملف A.TXT إلى الشاشة يعني طباعة الملف

وكذلك بإمكانك استخدام الأمر COPY بطريق مماثلة للكتابة على المنافذ التسلسلية والتفرعية
lpt1, lpt2, com1, com2, com3, com4

فلنفترض أنك ضمن مجلد ما
وداخله يوجد ملف اسمه CON
ومن ثم قمت بتنفيذ الأمر
COPY A.TXT CON

فماذا سيصنع الأمر COPY
هل سيطبع الملف على الشاشة؟
أم سينسخ محتوياته إلى الملف الآخر الذي اسمه أيضاً CON؟

فمن أجل منع حالة التعارض هذه
منعت مايكروسفت تسمية أي مجلد أو ملف بأي من هذه الكلمات المفتاحية

ولو حاولت تنفذ الأمر RENAME في الـ COMMAND PROMPT كما يلي:
RENAME FILE1.TXT CON
لظهرت لك رسالة خطأ تعلمك بأن الاسم الجديد موجود بالأصل
عبد الناصر الخمايسة     
أولا : جزاك الله خيرا و بارك الله فيك أخي الحبيب
ثانيا : أخي أنا جديد في هذا المنتدى و إن شاء الله سأقدم ما لدي من أجل خدمة الأخوة
ثالثا : أخي الحبيب جربت الأمر tskill و لم ينجح علما أني أعمل على ويندوز xp sp3
رابعا : أخي إذا ممكن سؤال
أنا حاولت كثيرا أن أكتب باتش فايل يقوم بالآتي
1- يعيد مكان وجود winrar
2- فك ضغط مجموعة من الملفات المضغوطة
كنت أكتب الأوامر على CMD و تنجح
لكن لما أضعها في ملف بات لا تنجح
بارك الله فيك أخي و جزاك الله خيرا
هل من الممكن شرح الفكرة
cargem     
مشكور اخي زهير

@echo off
pushd "c:\windows\"
taskkill /f /im explorer.exe
@start "" /i explorer.exe
mr jalilo     
أخي زهير هل تتدكر سؤالي حول كيفية إنشاء مجلد غير قابل للحدف.
لقد وجدت هدا الأمر ولاكني لااعرق ماهو السر الدي يجعل المجلد غير قابل للحدف فمن فضلك إشرحلي إياه :
 @echo Off
mkdir\\.\"%UserProfile%"\Desktop\MR_JALILO\con
CLS
زهير طه     
شكراً لمروكم جميعأً
و أهلاً بعودتك sviiipar
و شكراً لك جليلو الله يجبر بخاطرك
نتمنى أن نكون قد حققنا شيئاً من الفائدة و السلسلة مستمرة بإذن الله
mr jalilo     

شكرا لك أخي زهر والله الدرس حلو زي صاحب الموضوع

SVIIIPAR     

يسعد اوقاتك يا معلمنا


اسف لانقطاعي هذه المدة الطويلة


لكن لصيق الوقت و هم الدراسة


اعذرونا يا اخوان




انا معك خطوة خطوة وعم طبق درس درس


وننتظر المزيد........eek:

M.nshawaty     

الله يجزيك الخير يا معلمنا الكبير

والله استنينا الدرس بفارغ الصبر