# ملف دفعي

ملف دُفْعِيّ (بالإنكليزية: batch file) هي اسم لنوع من الملفات في أنظمة دوس، أو إس/2 وويندوز، تحتوي على أوامر يتم تنفيذها في مترجم الأوامر بنفس لغة jcl والأنظمة الأخرى لأجهزة الحاسوب المركزية الكبيرة والحواسيب الصغيرة، تتم إضافة الملف الدُّفْعيّ لتسهيل أي عمل مطلوب لتنفيذ مهمه معينه عن طريق السماح للمستخدم بكتابة تعليمات معينة من اجل تنفيذها على نظام تشغيل. عندما يعمل الملف الدُّفْعيّ يقوم البرنامج قشرة بقراءة الأوامر وتنفيذها بالترتيب (بعد الانتهاء من السطر يبدأ في التالي). في أنظمة التشغيل الأخرى مثل يونيكس يوجد أنواع مشابهة تسمى shell script يكون امتداد هذه الملفات هو.bat ويتم استخدامه بالعادة في نظام الدوس ونظام ويندوز 9x. في أنظمة التشغيل ويندوز إن تي وأو إس/2 وتم إضافة امتداد اخر هو.cmd.ومن الممكن ان يكون هناك امتدادات أخرى لالملف الدُّفْعيّ مثل.btm في أنظمة تشغيل أخرى مثل 4DOS وبرنامج الغطاء له هو 4NT.

## انظمة التشغيل

من الممكن الحصول على معلومات موجزة عن امر والمتغيرات المتعلقة به يتم إظهارها على الشاشة عن طريقه طباعة الامر ومن ثم "/?" في واجهة سطر الأوامر (command prompt) ومن ثم الضغط على مفتاح enter وفي بعض الأحيان يتم كتابة الأمر ثم “-?” أو “?” وفي بعض الأحيان يظهر البرنامج معلومات عن الأمر في حالة كتابة الامر بدون المتغيرات المرفقة معه (في حال كان يتطلب متغيرات)

### نظام الدوس MS-dos

في ملفات الدوس يمكن ابتداء الملف الدُّفْعيّ عن طريق واجهة سطر الأوامر (command line) عن طريق كتابه الامر والمتغيرات الخاصة به ثم الضغط على زر enter وعندما يقوم الدوس بتحميل الملف فإن برنامج autoexec.bat تلقائيا يتنفذ وبهذا فإن أي أمر مطلوب تنفيذه في نظام الدوس يتم وضعه في الملف. في نظام الدوس الامتداد.bat معرف على انه ملف يحتوي على أوامر يمكن تنفيذها في مترجم الاوامر بالتسلسل في حاله انه مجموعة من الأوامر المطلوب تنفيذها مع الأخذ بعين الاعتبار عن وجود بعض الأوامر للبرمجة البسيطة مثل goto التي تغير التسلسل في تنفيذ البرنامج.

### أنظمة الويندوز الأولى

قامت شركة ويندوز عام 1985 بإنتاج نظام تشغيل مع واجهه مستخدم GUI عوضا عن الأنظمة الكتابية وبالإضافة إلى ذلك كانت مصممة لتشغيل الدوس. وفي النسخ الأولى كان يمكن تشغيل الملف الدُّفْعيّ عن طريق الدوس ثم أصبحت تستعمل الcommand.com لتنفيذ الملف الدُّفْعيّ في انظمه التشغيل التالية: Windows 1، 2 and 3
Windows 95 and 98
Windows ME

### Os\2

نظام التشغيل بالشراكة بسبب خلافات وكمحصله أصبحت ترمز لنظام الدوس الذي أنتجته بdos بدون ذكر مايكروسوفت (ms-dos) ولكن هذا لم يؤثر على الملف الدُّفْعيّ التي كانت تعمل على الcommand.com.

### Windows NT

نسخ الويندوز قبل ال NT كانت تستخدم الms-dos ونفس مترجم الاوامر (command.com) لتنفيذ الملف الدُّفْعيّ. ولكن ويندوز ان تي كانت تعمل مباشرة من لائحه التمهيد (booting list) من القرص الصلب وتم تطوير معالج اوامر من 32بت (cmd.exe)ويمكنه التعامل مع الملفات ذات الامتداد.bat و.cmd cmd.exe أضاف أوامر إضافية بالإضافة للاصليه بأسلوب مختلف قليلا لذا من الممكن ان يعمل الملف الدُّفْعيّ باختلاف قليل بين الcommand.com والcmd.exe ولكن في معظم الأحيان يعطي نفس النواتج. اطلقت مايكروسوفت نسخه من الcmd.exe لويندوز9x و ME واسمها win95cmd لتتيح لمستخدمي النسخ القديمة من الويندوز استخدام cmd.exe في نسخ أقدم من ويندوز لالملف الدُّفْعيّ. في ويندوز8 cmd.exe هي عباره عن مترجم اوامر لملفات الباتس، الcommand.com يمكنه ان يعمل على الcmd.exe (نسخ ويندوز 32بت يمكنها تشغيل برامج ال16بت).

## امتدادات الملفات

* .bat هي أول امتداد تم استخدامه من مايكروسوفت لالملف الدُّفْعيّ وهذا الامتداد يعمل في الms-dos وكل نسخ الويدوز التي اقل من command.com أو cmd.exe على الرغم من الاختلافات بين الطريقتين
* .cmd : يتم استخدام هذا الامتداد في انظمه التشغيل في windows NT ويعمل مع مترجم الأوامر cmd.exe ولا يمكنها ان تعمل على أجهزة الحاسوب الي تعتمد على ال command.com لذا يمنع أي ملف دفعي من العمل على أجهزة الويندور غير الملائمه. كما يعمل هذا الامتداد أيضا على أجهزة IBM OS\2.
* .btm يتم استخدام هذا الامتداد على 4DOS و 4NT. ويقومان بجعل هذه الملفات تعمل بشكل اسرع وبالاخص مع الأطول منهم

### الفروق بين الامتدادات.bat و.cmd في التنفيذ على windows NT

الفرق الوحيد هو أنه في ملفات الـ.cmd هناك متغير هو errorlevel يتغير مع الأوامر الصحيحة والتي تتأثر بامتدادات الأوامر اما ملفات ال.bat فلا تتأثر الا بالأوامر الخاطئة.

## لغات برمجه أخرى من ويندوز

لغه ال cmd.exe والتي تنفذ كل ملفات ال.cmd مدعومة في كل نسخ ويندوز ال 32بت وال64بت إلى النسخة التجريبية من ويندوز8 اما الcommnad.com التي تنقذ ملفات ال.bat فهي مدعومه في نسخ ال32بت وال16بت وحتى النسخة التجريبية من ويندوز8. ومع وجود ويندوز باورشيل التي تعد أفضل في الإصدارات الأخيرة من ويندوز ولكن مايكروسوفت لا تزال تستخدم ملفات ال.cmd إلى الآن على الأقل في ملفات الويندوز سيرفر 2008. والان يوجد لغات برمجة أفضل قدمتها مايكروسوفت للويندوز مثل:
* KiXtart (.kix): وضعت هذه اللغة عن طريق مايكروسوفت سنة 1991 لتجد النقص في الأوامر تسجيل الدخول في الشبكات
* Windows script host (.vbs and.js)
* Windows PowerShell (.ps1)
من الممكن تنفيذ الملف بكتابة اسمه بدون الامتداد لهذا الملف ولكن في حال تكرار اسم الملف بامتدادات مختلفة فان هناك قوانين تحدد البرنامج الذي سيتم ترجمته فمثلا دائما البرامج ذات الامتداد.com لها أولوية أعلى من غيرها ولكن في أنظمة التشغيل الجيدة يمكن للمستخدم تغيير الأولويات.