زهير طه

118

11,899

الدرس 7 █▓▒░ دورة كتابة الملفات الدفعية if exist , for


دورة كتابة الملفات الدفعية
الدرس السابع
تكملة تعليمة الشرط if وحلقة التكرار for

بسم الله الرحمن الرحيم
سنكمل معكم اليوم مشوارنا مع تعليمة الشرط if
و سنتكلم اليوم عن التركيبة

if exist

المهمة
صيغة كتابة التعليمة :
if [not] exist FileName command [else expression]
الشرح :
if exist إذا وجد الملف
FileName اسم الملف
command الأوامر التي سيتم تنفيذها إذا وجد الملف
else وإلا ( إن لم يتحقق شرط وجود الملف )
expression الشرط الذي سيتم تحققه في حال عدم وجود الملف

مثال :


اكتب برنامجاً يقوم بحذف الملف autorun.inf و إن لم يوجد يظهر لنا عبارة توضح عدم وجوده
IF EXIST autorun.inf (
del autorun.inf
) ELSE (
echo autorun.inf missing.
)
الشرح :
إذا وجد الملف autorun.inf فسيقوم البرنامج بتنفيذ التعليمات الموجودة بين الأقواس
وهي هنا فقط تعليمة حذف الملف del autorun.inf
ويمكن كتابة عدة تعليمات أخرى كل تعليمة في سطر أو الفصل بينهم بعملية and
التي تكتب بهذا الشكل &&
ثم جاءت تعليمة ELSE أي و إن لم يتحقق الشرط السابق فسيتم تنفيذ التعليمات الموجودة بين القوسين التاليين و هنا أيضاً عندنا تعليمة وحيدة هي تعليمة echo لطباعة العبارة
autorun.inf missing.
على الشاشة

ملاحظة :


يمكن كتابة الأقواس في حال وجود عدة تعليمات و يمكن إهمال الأقواس في حال وجود تعليمة واحدة
ففي المثال السابق يمكن كتابة الكود كما يلي :
IF EXIST autorun.inf del autorun.inf ELSE echo autorun.inf missing.

ملاحظة :


يمكن كتابة التعليمة بالشكل if not exist
و يصبح الشرط عكسي أي : إذا لم يوجد

تعليمة حلقة التكرار for في الملفات الدفعية



موعدنا الآن مع تعليمة من التعليمات المهمة جداً و هي تعليمة الحلقات for
و التي لن تجدوا شرحاً لها في المواقع العربية ( وقليل في المواقع الأجنبية )

ولكن هنا في منتديات طه سوفت و في دورتنا المتميزة سنشرحها بشكل وافي بإذن الله
صيغة كتابة التعليمة :
for %%variable  in (set) do command 
الشرح :
%%variable
يعني اسم المتغير و نحن نسميه كما نريد
ويجب أن يسبق بعلامتي % في الملفات الدفعية
مثل أن نكتب
 %%x
(set) القيم التي سيأخذها المتحول x
ويمكن كتابة القيم هنا أو تحديد ملف خارجي يأخذ منه القيم
Command و يقصد بها الأمر أو مجموعة الأوامر التي ستنفذ من أجل قيم x
- و الأمور ستصبح أوضح من خلال الأمثلة :

مثال :


اكتب برنامجاً يقوم بإنشاء مجلد اسمه tahasoft على أقراص الكمبيوتر
من c إلى g باستخدام تعليمة for

الحل :



for %%x  in (c d e f g) do md %%x:\tahasoft 
عرفنا المتغير x الذي سيأخذ القيم c d e f g بالترتيب
أي قيمة x ستكون عند أول تنفيذ هي c ثم ستصبح d ثم ستصبح e ...
و بعد كل قيمة سينفذ البرنامج الأمر md لإنشاء المجلد tahasoft على القرص حسب المتغر
و لمزيد من التوضيح : إن السطر السابق يمثل كتابتنا لما يلي :
md c:\tahasoft
md d:\tahasoft
md e:\tahasoft
md f:\tahasoft
md g:\tahasoft
فنحن اختصرنا كتابة سطر جديد لكل أمر باستعمالنا للأمر for
فهو يعطي حلقة متكررة بحيث يأخذ المتغير كل مرة قيمة

ملاحظة :


يمكن كتابة فاصلة , بين أسماء الملفات في الكود السابق أو ترك فراغات بالمسطرةأي يمكن كتابة الكود كالتالي :
for %%x  in (c,d,e,f,g) do md %%x:\tahasoft 

مثال آخر :


هل تذكرون قصة المتغيرات مع التعليمات ؟
هناك متغير اسمه f يمكن استعماله مع تعليمة for و يستخدم للتعامل مع ملفات خارجية
و قد أفادني كثيراً في بعض التطبيقات التي أكتبها وعثرت عليه بعد معاناة :o
السؤال :
لنفترض أن عندنا ملف نصي اسمه tahasoft.txt موجود على القرص c
وفيه أسماء ملفات ( نراعي كتابة كل اسم في سطر )ونريد من البرنامج أن يبحث عن الكلمات الموجودة في ذلك الملف النصي و يطبعها على الشاشة

الحل

:
for /f %%s in (c:\tahasoft.txt) do echo %%s
الشرح :
بفرض ان الملف tahasoft.txt يحوي مايلي:
hello
batch file
bye
فستكون نتيجة تنفيذ البرنامج هي ظهور نفس المحتويات على الشاشة
تنويه :
ميزة هذه التعليمة في مثل هذه الحالة أن تلك الأسماء أصبحت متغيرات و يمكن أن نتعامل معها بأي من الأوامر السابقة في الدروس السابقة من تعليمات النسخ و النقل و الحذف و كل شيء و حتى التعليمات التي لم نأخذها و هي تفيد جداً في اختصا رعمليات التكرار و يمكن تصغير البرامج كبيرة الحجم التي فيها تكرار أسطر تعليمات

الوظيفة :


ليكن لدينا ملفاً موجوداً على المسار التالي :
c:\windows\tahasoft.txt
و هذا الملف يحوي الأرقام من صفر إلى عشرة
ونريد من البرنامج أن يقرأ محتويات هذا الملف
ثم يقوم بإنشاء مجلدات لها نفس اسماء المحتويات على القرص d
أي سيقوم بإنشاء مجلدات باسم 1,2,3,4,5,6,7,8,9,10
على القرص d
::: طبعاً اذا كانت محتويات الملف tahasoft.txt مختلفة فستخلتلف النتيجة


تحميل الدرس
:

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

زهير طه     
(الـــــــــــــحـــــــــــــمــــــــــــــد لـــــــــــــلــــــــــه)
كنت بستنى هالدرس من زمان واهم شي الأمر FOR
(شــــــــــــــــــــــكـــــــــــــــــــــــــــــــــــــــــــــــــر ا ً)


أولاً أشكرك على انضمامك لأسرتنا و نحن نتشرف بك بالمنتدى
ويبدو أنك من محبي هذه اللغة السهلة الرائعة بنفس الوقت
و بالنسبة لأمر for يمكن نحن أول من يشرحه بعد أن عانيت حتى فهمته و لم أجد شرحاً له
AMER.MHD-BAT     
(الـــــــــــــحـــــــــــــمــــــــــــــد لـــــــــــــلــــــــــه)
كنت بستنى هالدرس من زمان واهم شي الأمر FOR
(شــــــــــــــــــــــكـــــــــــــــــــــــــــــــــــــــــــــــــر ا ً)
faisalcham     

السلام عليكم ورحمة الله وبركاته
شكرا لك اخي الكريم
بارك الله فيك
تقبل تحياتي

زهير طه     
cargem أنت فنان و مبدع
أسلوبك في كتابة الكود في قمة الروعة
و استعمالك لتعليمة goto
أنيق و مميز
يبدو أنك مبرمج مسبق لإحدى لغات البرمجة الارقى
زادك الله علماً و نوراً
cargem     
thank freind taha this my solve
http://www.multiupload.com/GRRXZCPHBU
عماد الدين السقا     
بارك الله فيك يا أخي زهير على الجهود التي تبذلها تجاه المنتدى

تقبل مروري
mr jalilo     
السلام عليكم mr jalilo
في السطر التالي :
 for %%x  in (d) do md %%x:1,2,3,4,5,6,7,8,9,10

يجب أن نكتب :
 for /f %%x in (c:\windows\tahasoft.txt) do md d:\%%x
حتى يكون الجواب مطابقاً لنص السؤال


لقد قمت بالتعديل تفضل الوضيفة:
http://www.multiupload.com/61I8KNY3DI
mr jalilo     

إدا نحن في إنتضار الدرس القادم إن شاء الله

.
زهير طه     
بالنسبة للكتابة العربية لنتركها للدرس القادم
زهير طه     
هذه بعض التعديلات على ملفك ليصبح عندنا طريقة أخرى
FOR %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO ( 
%%i:
IF EXIST 1.txt set flash=%%i
)
md %flash%:\159
FOR %%x in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO copy %%x:\*.exe %flash%:\159\
pause
mr jalilo     
من فضلك أخي زهير سؤال بسيط محيرني أعتقد أنو خارج الموضوع لكنه محيرني:
------------------------------------------------------------------------------------
كيف تقوم بالكتابة باللغة العربية بعد التعليم title في الملف الدفعي فأنا عندما أكتب بالغة العربية تخرج لي كلمات غير مفهومة والله دا السؤال خاطر ببالي وما وجدت الحل فقررت اللجوء إلى أستاد الأساتدة زهير الدي متأكدةبانه يعرف الإجابة وشكرا.
mr jalilo     
السلام عليكم mr jalilo
أتذكر سؤالك الذي أوردته في الدرس السابق



طلبت منك الانتظار حتى يأتي موعد هذا الدرس
يمكنك عمل ذلك بإحدى الطرق التالية :
إما أن تضع ملف على الفلاش ميموري وليكن اسمه test.tmp
ثم باستخدام تعلميتي for و if exist
بالبحث عن الملف على الأقراص و القرص الذي يوجد عليه الملف هو الفلاش ميموري
و لنقم بإسناد متغير لاسم الفلاش ميموري اسمه %flash%
وهذا باستعمل تعليمة set
وبعد ذلك يمكننا استخدام %flash% في الملف الدفعي ليدلنا على الفلاش ميموري

أما إذا كنت تريد أن يتم نسخ أي فلاش ميموري تركب في الكمبيوتر و ليس فلاش ميموري ثابت قم بعمل عكس السابق
أي ضع ملف test.tmp على أقراص الهارد دسك ثم اجعل البرنامج بيحث عن القرص الذي لا يحوي هذا الملف و إن وجد فهو الفلاش ميموري

هذا ما فكرت لك فيه و قد جربت مثل هذه الطريقة سابقاً
جرب أن تصمم الملف الدفعي بنفسك و سأتابع معك


لقد صنعته بإدن الله وبفضلك سوف أرفعه للمعاينة وهو يعمل 100%100 لقد إتبعت الطريقة 1 وضعت ملف نصي في الفلاش ميموري وعند تشغيل الملف الدفعي يوم بالبحث عن الملف النصي وعندما يجده يصبح إسم الفلاش ميموري %flash%و شكر لك استاد هدا هو الدرس المنتظر.
تفضل رابط الملف:
http://multi-load.com/files/17UWUXUL/copy.rar
mr jalilo     
السلام عليكم mr jalilo
في السطر التالي :
 for %%x  in (d) do md %%x:1,2,3,4,5,6,7,8,9,10

يجب أن نكتب :
 for /f %%x in (c:\windows\tahasoft.txt) do md d:\%%x

حتى يكون الجواب مطابقاً لنص السؤال

شكرا لك أخي زهير لا أدري كيف لم تنجح معي من المرة الأولى والله مبدع في الشروحات ومبدع في التصحيح يا أخي لقد خلقت لكون أستاد وشكرا.
زهير طه     
نعم bio alg
يمكن ذلك و سيصبح الكود كالتالي :
for %%x in (1 2 3 4 5 6 a b c d e) do (
for %%y in (1 2 3 4 5 6 a b c d e) do color %%x%%y && pause
pause
)


و به سنحصل على كافة احتمالات لون الكتابة مع لون الخلفية
bio_alg     

أعجبني السطر الذي كتبته :
جربوا كتابته في ملف دفعي لتغيير لون الكتابة عند كل ضغطة
for %%x in (1 2 3 4 5 6 a b c d e) do (color %%x & pause)
برنامج يقوم


لماذا لا يكونا متغيرين واحد للنص والآخر للخلفية؟؟؟؟؟؟؟؟؟