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

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

شكرا على ملاحظتك أخى الكريم, الهدف من المشاركة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 ثم شغلت السكريبت الذى سيبحث بطريقة أوتوماتيكية و دائمة عن أي ملف باتش ثم نفذت الملف التنفيذى فى هذه الحالة قام السكريبت بنسخ الملف الدفعى الذى أنشأه الملف التنفيذي
 
توقيع : walid2mi
لا ادري اخي الكريم ماذا اقول لك بوركت وجوزيت خيرا سهلت الأمر علينا وساعدتني كثيرا فيما اريد زادك الله علما اخي؟
اخي ممكن استفسارات في السكريبت التي وضعته؟
ياريت توضيح عن :
قمت في بداية السكربت بحذف مجلد demo بكتابة
rd في نهاية السطر كتبت >nul يلتبث على الامر كثيرا في هذه المعلمة (>nul)
ياريت تعطتي معلومات عنها .
وبعد ذلك في الحلقة %%a ماذا تعني
اعرف ان الأسألة بدائية جدا وتدل على عدم الخبرة لكن طمعي في سعة صدرك ما جعلتني أسأل؟
 
التعديل الأخير:
نعم اخي فهمت هذا السطر
rd /s /q demo
يقوم بحذف محتوى المجلد المفترض انشائه مع الباتش ليستققبل الملفات الجديدة لكي لا يختلط الأمر.
أما >nul يقوم بتنفيذ الامر بدون اظهار النتيجة على الشاشة.
الآن احاول ان افهم %%a هل هي متغير افتراضي من عنحدك كمثال أم هي متغير ثابت للحلقة for ولما سبقت بعلامتين %% وليست واحدة .
سامحني لفهمي البطيء .
 
نعم اخي فهمت هذا السطر
rd /s /q demo
يقوم بحذف محتوى المجلد المفترض انشائه مع الباتش ليستققبل الملفات الجديدة لكي لا يختلط الأمر.
أما >nul يقوم بتنفيذ الامر بدون اظهار النتيجة على الشاشة.
الآن احاول ان افهم %%a هل هي متغير افتراضي من عنحدك كمثال أم هي متغير ثابت للحلقة for ولما سبقت بعلامتين %% وليست واحدة .
سامحني لفهمي البطيء .


المعلمة
>
هي لتوجيه المخرجات مثلا
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> مثلا حتى تتميز الأكواد عن غيرها وهذا مقلق لأنه أحيانا يظهر الكود بطريقة عكسية
 
توقيع : walid2mi
ن
الآن احاول ان افهم %%a هل هي متغير افتراضي من عنحدك كمثال أم هي متغير ثابت للحلقة for ولما سبقت بعلامتين %% وليست واحدة .
سامحني لفهمي البطيء .


المتغير %%a ليس ثابت بل هو إختيارى ولكن ليس بإختيار مطلق فيجب أن يكون حرف واحد a أو b أو أي حرف آخر أو حتى أرقام أو رموز معينة
أما لماذا وضعت علامتين %% وليس واحدة لأن معالج الملفات الدفعية مختلف عن معالج سطر الأوامر خاصة عندما نتعامل مع المتغيرات فمثلا إذا وضعت داخل ملف تنفيذي
echo %testdemo%
ونفذته فسوف لن يظهر شيئا أما إذا وضعت نفس السطر مباشرة فى سطر الأوامر فسوف يظهر ما كتبته حرفيا,
إذا إستعملت سطر الأوامر فيمكنك كتابة % مرة واحدة فقط أما إذا إستعملت ملف تنفيذى فيجب أن تضاعف علامة %
 
توقيع : walid2mi
برك الله فيك اخي
الان تم تصحيح العديد من الافكار الخاطئة التي كنت اعرفها عن الامرين
 
توقيع : hatem-ghouthi
بارك الله فيك اخي الحبيب ياريت الاكثار من هذه المعلومات فهي مفيدة جدا بالنسبة للسكرب-ت -الخاص بنسخ ملفات الباتش هل ممكن- احدد عدد لنسخ- ملفات الباتش--------------- اريد ان ينسخ 3 او 4 لان هناك ملفات بها اكثر من ملف؟
س لماذا كتبت في نهاية السكربت
explorer.exe demo
مافهمته لكي يفتح المجلد ولكنه يفتح المستندات؟
س ممكن حالات الحلقة for
على فكرة طبعا اتمنى الاجابة لكن اذا كان فيها اي تعب او مضايقة فانت في حل من الاجابة لكن طريقتك في السشرح سلسة وتوصل المعلومة ببساطة فلذلك واجب على ان اكون مستغل؟
 
بالنسبة لفكرة تحديد عدد النسخ
الفكرة جميلة ومفيدة
حيث كفكرة بسيطة
يقوم الكود البرمجي بنسخ الملف ويعطيه رقم واحد
ثم يبحث عن الملف باسم رقم 1 واذا وجده يقوم بالنسخ مرة ثانية ويعطيه رقم 2
ثم يبحث اذا وجد رقم 2 يقوم بالنسخ مرة 3 ويعطيه رقم 3
ثم هذه المرة يقوم بالبحث عن الارقام 3 معا اذا وجدها فهنا يامر الكود البرمجي بانتهاء عملية النسخ ويغلق
الفكرة بسيطة اظن
ساحاول تطبيقها على حسب موضوعنا
وان شاء الله القى مساعدة منك اخي وليد
 
توقيع : hatem-ghouthi
كود:
@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 في البداية بدل رسالة الخطا ليستطيع البرنامج ان يقوم بعملية النسخ على اكمل وجه
 
التعديل الأخير:
توقيع : hatem-ghouthi
بارك الله فيك
 
توقيع : BlackOps
السلام عليكم

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

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



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

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

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

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

دمت قي خير
 
السلام عليكم

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


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

نعم انت محق
فكما قلت انت بالنهاية لا طريقة آمنة 100%
 
توقيع : hatem-ghouthi
السلام عليكم

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


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

الملفات الدفعية المستعملة فى الإختبار موجودة
يجب عليك تسجيل الدخول او تسجيل لمشاهدة الرابط المخفي
 
توقيع : walid2mi
السلام عليكم


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


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