مركز تحميل الخليج

  1. إستبعاد الملاحظة

أسرار cmd و الملفات الدفعية ?

الموضوع في 'منتدى الدورات العامة' بواسطة walid2mi, بتاريخ ‏نوفمبر 10, 2015.

  1. ابو محمد ومصطفى

    ابو محمد ومصطفى زيزوومي فعال

    إنضم إلينا في:
    ‏أكتوبر 21, 2013
    المشاركات:
    187
    الإعجابات المتلقاة:
    112
    نقاط الجائزة:
    260
    الجنس:
    ذكر
    الإقامة:
    طنطا
    برامج الحماية:
    AVG
    نظام التشغيل:
    Windows 8
    السلام علييكم بارك الله فيك اخي الكريم نعم هذه الطريقة جيده لكن هناك ثغرة لو كان ملف الباتش لايؤخذ الا ثواني للتنفيذ فانني لا استطيع الحصول على الملف من الباتش لانه يحذف بعد التنفيذ مباشر اتمنى ان تكون وصلت الفكرة
     
    walid2mi و hatem-ghouthi معجبون بهذا.
  2. walid2mi

    walid2mi زيزوومي نشيط

    إنضم إلينا في:
    ‏أكتوبر 16, 2010
    المشاركات:
    107
    الإعجابات المتلقاة:
    312
    نقاط الجائزة:
    170
    الجنس:
    ذكر
    الإقامة:
    Tunisia
    برامج الحماية:
    اخرى
    نظام التشغيل:
    Windows8.1
    شكرا على ملاحظتك أخى الكريم, الهدف من المشاركة3 ليس تقديم الطريقة التى ستمكننا من معرفة كود الملف الدفعى ولكن الأهداف متمثلة فى 2 أهداف فرعية و هدف رئيسي أما الأشياء الفرعية فهي:

    * تقديم محرر للملفات الدفعية له compiler وله عدة ميزات جميلة
    * تقديم طريقة تحويل الملف الدفعى لملف تنفيذي

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

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

    @Echo Off

    rd demo /s /q 2>Nul
    md demo
    cd demo

    :loop
    for /R "%temp%" %%a in (*.bat) do copy %%a .
    if not exist *.bat goto:loop
    explorer.exe demo
    pause

    فى هذه الحالة أنشأت ملف تنفيذي بسيط

    @echo off
    echo test demo

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

    ابو محمد ومصطفى زيزوومي فعال

    إنضم إلينا في:
    ‏أكتوبر 21, 2013
    المشاركات:
    187
    الإعجابات المتلقاة:
    112
    نقاط الجائزة:
    260
    الجنس:
    ذكر
    الإقامة:
    طنطا
    برامج الحماية:
    AVG
    نظام التشغيل:
    Windows 8
    لا ادري اخي الكريم ماذا اقول لك بوركت وجوزيت خيرا سهلت الأمر علينا وساعدتني كثيرا فيما اريد زادك الله علما اخي؟
    اخي ممكن استفسارات في السكريبت التي وضعته؟
    ياريت توضيح عن :
    قمت في بداية السكربت بحذف مجلد demo بكتابة
    rd في نهاية السطر كتبت >nul يلتبث على الامر كثيرا في هذه المعلمة (>nul)
    ياريت تعطتي معلومات عنها .
    وبعد ذلك في الحلقة %%a ماذا تعني
    اعرف ان الأسألة بدائية جدا وتدل على عدم الخبرة لكن طمعي في سعة صدرك ما جعلتني أسأل؟
     
    آخر تعديل: ‏نوفمبر 30, 2015
    MagicianMiDo32 و hatem-ghouthi معجبون بهذا.
  4. ابو محمد ومصطفى

    ابو محمد ومصطفى زيزوومي فعال

    إنضم إلينا في:
    ‏أكتوبر 21, 2013
    المشاركات:
    187
    الإعجابات المتلقاة:
    112
    نقاط الجائزة:
    260
    الجنس:
    ذكر
    الإقامة:
    طنطا
    برامج الحماية:
    AVG
    نظام التشغيل:
    Windows 8
    نعم اخي فهمت هذا السطر
    rd /s /q demo
    يقوم بحذف محتوى المجلد المفترض انشائه مع الباتش ليستققبل الملفات الجديدة لكي لا يختلط الأمر.
    أما >nul يقوم بتنفيذ الامر بدون اظهار النتيجة على الشاشة.
    الآن احاول ان افهم %%a هل هي متغير افتراضي من عنحدك كمثال أم هي متغير ثابت للحلقة for ولما سبقت بعلامتين %% وليست واحدة .
    سامحني لفهمي البطيء .
     
    MagicianMiDo32 و hatem-ghouthi معجبون بهذا.
  5. walid2mi

    walid2mi زيزوومي نشيط

    إنضم إلينا في:
    ‏أكتوبر 16, 2010
    المشاركات:
    107
    الإعجابات المتلقاة:
    312
    نقاط الجائزة:
    170
    الجنس:
    ذكر
    الإقامة:
    Tunisia
    برامج الحماية:
    اخرى
    نظام التشغيل:
    Windows8.1

    المعلمة
    >
    هي لتوجيه المخرجات مثلا
    dir > d:\file.txt
    هنا سنوجه مخرج الأمر dir للملف d:\file.txt
    ولكن هذه العلامة لا توجه المخرجات فقط للملفات بل كذلك لل Handles أو ل NUL
    أما ال Handles فإنى قد تحدثت عن ذلك بعمق فى حلقات عديدة فى دورة الملفات الدفعية
    للكون ثقوب سوداء تبتلع كل شيء يتوجه إليها ويختفى عندما تبتلعه وكذلك NUL فإنها الثقب الأسود للملفات الدفعية فإذا أردت أن تخفى مخرجات أمر معين لسبب ما فإنه يمكنك أن تستعمل <nul
    أكثر الأوامر لها مخرجات و رسائل خطر, عندما نريد أن نخفى رسائل الخطأ نستعل 2>NUL

    أما %%a فهو متغير فالمتغيرات داخل حلقات التكرار forindo تكتب هكذا مثلا
    for %%a in (*.txt) do echo %%a

    داخل ملف دفعى ستظهر لنا كل الملفات من نوع txt ففى كل حلقة المتغير %%a سيأخذ إسم الملف ال txt ثم سيقوم بإظهاره من خلال echo

    ملاحظة: الموقع ليس فيه أوسمة ك <code> مثلا حتى تتميز الأكواد عن غيرها وهذا مقلق لأنه أحيانا يظهر الكود بطريقة عكسية
     
  6. walid2mi

    walid2mi زيزوومي نشيط

    إنضم إلينا في:
    ‏أكتوبر 16, 2010
    المشاركات:
    107
    الإعجابات المتلقاة:
    312
    نقاط الجائزة:
    170
    الجنس:
    ذكر
    الإقامة:
    Tunisia
    برامج الحماية:
    اخرى
    نظام التشغيل:
    Windows8.1

    المتغير %%a ليس ثابت بل هو إختيارى ولكن ليس بإختيار مطلق فيجب أن يكون حرف واحد a أو b أو أي حرف آخر أو حتى أرقام أو رموز معينة
    أما لماذا وضعت علامتين %% وليس واحدة لأن معالج الملفات الدفعية مختلف عن معالج سطر الأوامر خاصة عندما نتعامل مع المتغيرات فمثلا إذا وضعت داخل ملف تنفيذي
    echo %testdemo%
    ونفذته فسوف لن يظهر شيئا أما إذا وضعت نفس السطر مباشرة فى سطر الأوامر فسوف يظهر ما كتبته حرفيا,
    إذا إستعملت سطر الأوامر فيمكنك كتابة % مرة واحدة فقط أما إذا إستعملت ملف تنفيذى فيجب أن تضاعف علامة %
     
  7. hatem-ghouthi

    hatem-ghouthi زيزوومي مميز

    إنضم إلينا في:
    ‏مارس 6, 2015
    المشاركات:
    816
    الإعجابات المتلقاة:
    952
    نقاط الجائزة:
    590
    الجنس:
    ذكر
    برامج الحماية:
    اخرى
    نظام التشغيل:
    أخرى
    برك الله فيك اخي
    الان تم تصحيح العديد من الافكار الخاطئة التي كنت اعرفها عن الامرين
     
    ابو محمد ومصطفى و walid2mi معجبون بهذا.
  8. ابو محمد ومصطفى

    ابو محمد ومصطفى زيزوومي فعال

    إنضم إلينا في:
    ‏أكتوبر 21, 2013
    المشاركات:
    187
    الإعجابات المتلقاة:
    112
    نقاط الجائزة:
    260
    الجنس:
    ذكر
    الإقامة:
    طنطا
    برامج الحماية:
    AVG
    نظام التشغيل:
    Windows 8
    بارك الله فيك اخي الحبيب ياريت الاكثار من هذه المعلومات فهي مفيدة جدا بالنسبة للسكرب-ت -الخاص بنسخ ملفات الباتش هل ممكن- احدد عدد لنسخ- ملفات الباتش--------------- اريد ان ينسخ 3 او 4 لان هناك ملفات بها اكثر من ملف؟
    س لماذا كتبت في نهاية السكربت
    explorer.exe demo
    مافهمته لكي يفتح المجلد ولكنه يفتح المستندات؟
    س ممكن حالات الحلقة for
    على فكرة طبعا اتمنى الاجابة لكن اذا كان فيها اي تعب او مضايقة فانت في حل من الاجابة لكن طريقتك في السشرح سلسة وتوصل المعلومة ببساطة فلذلك واجب على ان اكون مستغل؟
     
    walid2mi ،MagicianMiDo32 و hatem-ghouthi معجبون بهذا.
  9. hatem-ghouthi

    hatem-ghouthi زيزوومي مميز

    إنضم إلينا في:
    ‏مارس 6, 2015
    المشاركات:
    816
    الإعجابات المتلقاة:
    952
    نقاط الجائزة:
    590
    الجنس:
    ذكر
    برامج الحماية:
    اخرى
    نظام التشغيل:
    أخرى
    بالنسبة لفكرة تحديد عدد النسخ
    الفكرة جميلة ومفيدة
    حيث كفكرة بسيطة
    يقوم الكود البرمجي بنسخ الملف ويعطيه رقم واحد
    ثم يبحث عن الملف باسم رقم 1 واذا وجده يقوم بالنسخ مرة ثانية ويعطيه رقم 2
    ثم يبحث اذا وجد رقم 2 يقوم بالنسخ مرة 3 ويعطيه رقم 3
    ثم هذه المرة يقوم بالبحث عن الارقام 3 معا اذا وجدها فهنا يامر الكود البرمجي بانتهاء عملية النسخ ويغلق
    الفكرة بسيطة اظن
    ساحاول تطبيقها على حسب موضوعنا
    وان شاء الله القى مساعدة منك اخي وليد
     
  10. hatem-ghouthi

    hatem-ghouthi زيزوومي مميز

    إنضم إلينا في:
    ‏مارس 6, 2015
    المشاركات:
    816
    الإعجابات المتلقاة:
    952
    نقاط الجائزة:
    590
    الجنس:
    ذكر
    برامج الحماية:
    اخرى
    نظام التشغيل:
    أخرى
    كود:
    @echo off
    if not exist *.bat (echo the file is not here )else ( goto start)
    pause>nul
    exit
    
    :start
    
    :a1
    cls
    copy *.bat 1.bat
    if exist 1.bat goto :a2
    goto a1
    
    :a2
    cls
    copy *.bat 2.bat
    if exist 2.bat goto :a3
    goto a2
    
    :a3
    cls
    copy *.bat 3.bat
    if exist 3.bat goto done
    goto a3
    
    :done
    cls
    echo  the mission complete
    echo.
    echo press any key to exit
    pause>nul
    
    هذا الكود يقوم اولا بالتحقق مما اذا كان الملف من نوع bat موجود .
    اذا لم يكن موجودا يظهر لك رسالة بانه غير موجود
    واذا وجده فانه يذب للسطر start اين تبدا عملية النسخ
    عملية النسخ تحتوي على 3 مراحل
    المرحلة الاولى تقوم بنسخ الملف من نوع bat الى 1
    ثم يتحقق مما اذا كان 1 موجود . اذا لم يوجد فانه يعيد عملية النسخ
    واذا وجده فانه ينتقل للمرحلة الثانية
    .وهكذا مع بقية المراحل الى غاية انهاء عدد النسخ المسموحة
    *************
    هذا الكود مجرد محاولة بسيطة فقط لفهم الفكرة . اذا يمكن اظافة loop في البداية بدل رسالة الخطا ليستطيع البرنامج ان يقوم بعملية النسخ على اكمل وجه
     
    آخر تعديل: ‏ديسمبر 2, 2015
  11. BlackOps

    BlackOps زيزوومي فعال

    إنضم إلينا في:
    ‏ديسمبر 1, 2015
    المشاركات:
    229
    الإعجابات المتلقاة:
    190
    نقاط الجائزة:
    250
    الجنس:
    ذكر
    برامج الحماية:
    اخرى
    نظام التشغيل:
    أخرى
    بارك الله فيك
     
  12. walid2mi

    walid2mi زيزوومي نشيط

    إنضم إلينا في:
    ‏أكتوبر 16, 2010
    المشاركات:
    107
    الإعجابات المتلقاة:
    312
    نقاط الجائزة:
    170
    الجنس:
    ذكر
    الإقامة:
    Tunisia
    برامج الحماية:
    اخرى
    نظام التشغيل:
    Windows8.1
    السلام عليكم

    المشاركة 4: العرض المرهق

    فى هذه الحلقة سوف نتعرض لمشاكل الأمر الداخلى echo




    ملخص
    إستعملنا فى هذه المشاركة عدة نكهات للأمر echo مثل echo+ أو echo[ أو echo= وتحدثنا حول الفروقات بين هذه النكهات لنصل بالنهاية أنه لا طريقة آمنة 100%
     
  13. SaMio

    SaMio زيزوومي جديد

    إنضم إلينا في:
    ‏أغسطس 16, 2007
    المشاركات:
    70
    الإعجابات المتلقاة:
    32
    نقاط الجائزة:
    90
    الجنس:
    ذكر
    الإقامة:
    k.s.a
    برامج الحماية:
    Avira
    نظام التشغيل:
    Windows 10
    بأنتظارك اخي الكريم

    وانتظار جميع المواضيع المتميزة والنادر شرحها بالعربي

    هذا هو الاثراء العربي نريد ذلك

    جعله الله صدقة علمك وبميزان حسانانك

    دمت قي خير
     
    أعجب بهذه المشاركة hatem-ghouthi
  14. hatem-ghouthi

    hatem-ghouthi زيزوومي مميز

    إنضم إلينا في:
    ‏مارس 6, 2015
    المشاركات:
    816
    الإعجابات المتلقاة:
    952
    نقاط الجائزة:
    590
    الجنس:
    ذكر
    برامج الحماية:
    اخرى
    نظام التشغيل:
    أخرى
    معلومات لا توزن بالذهب
    بارك الله فيك
     
    ابو محمد ومصطفى و walid2mi معجبون بهذا.
  15. walid2mi

    walid2mi زيزوومي نشيط

    إنضم إلينا في:
    ‏أكتوبر 16, 2010
    المشاركات:
    107
    الإعجابات المتلقاة:
    312
    نقاط الجائزة:
    170
    الجنس:
    ذكر
    الإقامة:
    Tunisia
    برامج الحماية:
    اخرى
    نظام التشغيل:
    Windows8.1
    السلام عليكم

    المشاركة 5: السحب و الإسقاط



    فى هذه المشاركة سنتعرف على كيفية تنفيذ الملفات الدفعية من خلال السحب و الإسقاط وسنتحدث على بعض المشاكل التى يمكن أن تعترضنا إذا إستعملنا هذه الطريقة مثل طول قيمة المدخلات من خلال البرمترات وكذلك خطر تنفيذ أكواد إذا ما إستعملنا بعض الرموز
     
    MagicianMiDo32 و hatem-ghouthi معجبون بهذا.
  16. hatem-ghouthi

    hatem-ghouthi زيزوومي مميز

    إنضم إلينا في:
    ‏مارس 6, 2015
    المشاركات:
    816
    الإعجابات المتلقاة:
    952
    نقاط الجائزة:
    590
    الجنس:
    ذكر
    برامج الحماية:
    اخرى
    نظام التشغيل:
    أخرى
    نعم هذا يظيف ميزة جمالية للملفات الدفعية ويسهل الكثير من الامور خصوصا فيما يتعلق بالمسارات والروابط
     
    أعجب بهذه المشاركة walid2mi
  17. walid2mi

    walid2mi زيزوومي نشيط

    إنضم إلينا في:
    ‏أكتوبر 16, 2010
    المشاركات:
    107
    الإعجابات المتلقاة:
    312
    نقاط الجائزة:
    170
    الجنس:
    ذكر
    الإقامة:
    Tunisia
    برامج الحماية:
    اخرى
    نظام التشغيل:
    Windows8.1
    نعم هي طريقة من عدة طرق لتنفيذ الملفات الدفعية وكما أن لها إيجابيات فلها كذلك سلبيات قد لا ينتبه لها المستخدم و تسبب له أخطاء عند تنفيذ أكواده وربما تستعمل تلك السلبيات كثغرات أمنية محتملة ولذلك يجب الإنتباه لمثل هذه الأمور
     
    MagicianMiDo32 و hatem-ghouthi معجبون بهذا.
  18. hatem-ghouthi

    hatem-ghouthi زيزوومي مميز

    إنضم إلينا في:
    ‏مارس 6, 2015
    المشاركات:
    816
    الإعجابات المتلقاة:
    952
    نقاط الجائزة:
    590
    الجنس:
    ذكر
    برامج الحماية:
    اخرى
    نظام التشغيل:
    أخرى
    نعم انت محق
    فكما قلت انت بالنهاية لا طريقة آمنة 100%
     
    MagicianMiDo32 و walid2mi معجبون بهذا.
  19. walid2mi

    walid2mi زيزوومي نشيط

    إنضم إلينا في:
    ‏أكتوبر 16, 2010
    المشاركات:
    107
    الإعجابات المتلقاة:
    312
    نقاط الجائزة:
    170
    الجنس:
    ذكر
    الإقامة:
    Tunisia
    برامج الحماية:
    اخرى
    نظام التشغيل:
    Windows8.1
    السلام عليكم

    المشاركة 5: find و findstr


    فى هذه المشاركة سنقوم بمقارنة جزئية بين أمري البحث find و findstr هذه المقارنة ستشمل فقط طول السلاسل الحرفية المسموح بها فى كلا الأمرين. الهدف هو إختيار أي من الأمرين أصلح للبيانات الكبيرة

    الملفات الدفعية المستعملة فى الإختبار موجودة من خلال هذا الرابط
     
    MagicianMiDo32 و hatem-ghouthi معجبون بهذا.
  20. walid2mi

    walid2mi زيزوومي نشيط

    إنضم إلينا في:
    ‏أكتوبر 16, 2010
    المشاركات:
    107
    الإعجابات المتلقاة:
    312
    نقاط الجائزة:
    170
    الجنس:
    ذكر
    الإقامة:
    Tunisia
    برامج الحماية:
    اخرى
    نظام التشغيل:
    Windows8.1
    السلام عليكم


    المشاركة 7: علامات البدل و نظام الملفات



    فى هذه المشاركة سوف نتحدث حول علامة البدل "نقطة إستفهام" وعن خطأ ربما يعترضنا إذا إستعملناها فى نظام الملفات
     
    hatem-ghouthi و MagicianMiDo32 معجبون بهذا.

مشاركة هذه الصفحة

جاري تحميل الصفحة...