اگر با نحوه استفاده از  خط فرمان آشنا باشید می توانید یک فایل batch را هم بنویسید. در ساده ترین شکل آن، یک فایل batch لیستی از چند دستور است و زمانی اجرا می شوند که دو بار بر روی آنها کلیک کنید. در ابتدا فایل های batch برای DOS توسعه داده شدند، اما هنوز هم بر روی نسخه های جدید ویندوز هم کار می کنند.

با اینکه اسکریپتهای PowerShell و Bash ممکن است قدرتمند تر باشند، اما فایل های batch هنوز می توانند برای اجرای اولیه دستورات ویندوز بسیار مفید باشند.

اصول فایل های batch

یک فایل batch در واقع یک فایل متنی ذخیره شده با پسوند .bat می باشد. شما می توانید این فایل ها را با استفاده از Notepad و یا یک ویرایشگر متن پیشرفته مانند Notepad++ بنویسید، اما از پردازشگرهایی مانند ورد نمی توانید استفاده کنید.

برای ساخت یک فایل batch ابتدا Notepad را باز کرده و سپس خطوط زیر را در آن تایپ کنید:

ECHO OFF
ECHO Hello World
PAUSE


سپس با کلیک بر روی منوی File و Save فایل را ذخیره کنید. در هنگام  ذخیره یک نام پیش فرض برای فایل انتخاب کنید. اما پسوند فایل را از .txt به .bat تغییر دهید.

برای مثال می توانید آن را  hello_world.bat بنامید.

برای اجرای فایل باید دوبار بر روی آن کلیک کنید. این فایل ECHO را خاموش می کند، خروجی را با پنهان کردن دستورات در خط فرمان نشان می دهد، متن Hello World را در صفحه نمایش نشان می دهد و سپس منتظر می ماند یک کلید را قبل از به پایان رسانیدن آن فشار دهید.

اگر PAUSE را به فایل اضافه نکنید، فایل batch دستورات خود را اجرا می کند و سپس به طور خودکار بسته می شود. در این مورد، Hello World را در پنجره نشان خواهد داد و سپس بلافاصله پنجره خط فرمان را می بندد. هنگامی که می خواهید دستورات را بدون دیدن خروجی اجرا کنید می توانید این را حذف کنید. اگر بخواهید چند دستور را حذف کنید، می توانید دستور PAUSE را در بین آنها قرار دهید.

نوشتن یک فایل Batch پیچیده

درست کردن این فایل ها آسان است و تنها چیزی که نیاز به تغییر دارند محتویات تایپ شده در Notepad است. برای اجرای چند فرمان، باید هر کدام را در خط خود تایپ کنید و سپس فایل هر کدام را به ترتیب اجرا خواهد کرد.

به عنوان مثال، در زیر می خواهیم یک فایل batch که چند دستور تشخیصی شبکه را اجرا می کند، بنویسیم. ممکن است بخواهیم ipconfig /all را برای دیدن اطلاعات شبکه اجرا کنیم، ping google.com را برای دیدن اینکه سرورهای گوگل پاسخگو هستند  اجرا کرده، tracert google.com را برای اجرای یک traceroute در google.com اجرا کنیم و ببینیم که آیا مشکلی وجود دارد.

در ساده ترین شکل، ما به سادگی می خواهیم همه این دستورات را در یک فایل batch، یکی پس از دیگری قرار دهیم، مانند:

ipconfig /all
ping google.com
tracert google.com
PAUSE

هنگامی که این فایل را اجرا می کنیم، می خواهیم خروجی هر دستور را درست پس از دیگری ببینیم. اما این لزوما ایده آل ترین راه برای ارسال یک فایل batch نیست.


به عنوان مثال، ممکن است بخواهید خطوط کامنت را اضافه کنید. هر خطی که با یک :: آغاز شود یک خط کامنت است و اجرا نخواهد شد. این شیوه مفیدترین راه برای توضیح این است که چه چیزی در فایل اتفاق می افتد.

شما همچنین ممکن است بخواهید دستور ECHO OFF  را به ابتدای فایل اضافه کنید. این به طور معمول به ابتدای فایل های batch اضافه می شود. هنگامی که این کار را انجام دادید، دستورات در خط فرمان نشان داده نمی شوند، تنها نتیجه نشان داده می شود. برای مثال، جزئیات اتصال به شبکه را خواهید دید اما خط ipconfig /all را نه. اکثر مردم اهمیتی به دستورات نمی دهند بنابراین این کار می تواند خروجی را تمیزتر نشان دهد.

به صورت زیر خواهد بود:

:: This batch file checks for network connection problems.
ECHO OFF
:: View network connection details
ipconfig /all
:: Check if Google.com is reachable
ping google.com
:: Run a traceroute to check the route to Google.com
tracert google.com
PAUSE


کارهای دیگری هم می توانید در فایل های batch انجام دهید. برای مثال، ممکن است batch اسکریت را در بالای دستورات اجرا کنید و سپس خروجی را به صورت یک فایل متنی بیرون دهید تا بعدا بتوانید آن را ببینید. برای این کار، باید از >> operator بعد از هر دستور برای اضافه کردن خروجی به فایل متنی استفاده کنید. در هنگام خواندن خروجی از فایل متنی می توانید دستور PAUSE را حذف کنید.

:: This batch file checks for network connection problems
:: and saves the output to a .txt file.
ECHO OFF
:: View network connection details
ipconfig /all >>  results.txt
:: Check if Google.com is reachable
ping google.com >> results.txt
:: Run a traceroute to check the route to Google.com
tracert google.com >> results.txt

پس از اجرای اسکریپت بالا، یک فایل results.txt در همان پوشه فایل batch با خروجی دستورات می بینید. زمانی که فایل batch اجرا شد پنجره خط فرمان به طور خودکار بسته می شود.

بسیاری از فایل های batch برای اجرای غیرتعاملی طراحی شده اند. برای مثال، می توانید یک فایل batch داشته باشید که فایل ها یا دایرکتوری های مختلف را در هر زمان با دوبار کلیک حذف می کند. برای این کار کافی است از دستور del برای حذف فایل ها و یا دستور deltree برای حذف دایرکتوری ها استفاده کنید.

اساسا، اکثر فایل های batch یک فرمان را پس از دیگری اجرا می کند. با این حال، این فایل ها در واقع می توانند بسیار پیچیده تر از این باشند. برای مثال، می توانید از توضیحات IF همراه با دستور GOTO برای بررسی ارزش کارها و یا پریدن به خطوط مختلف استفاده کنید. این کار بسیار شبیه به نوشتن یک برنامه کوچک واقعی به جای یک اسکریپت سریع می باشد. به همین دلیل است که فایل های .bat اغلب با نام برنامه های batch نامیده می شوند. اگر می خواهید کارهای پیچیده تری را انجام دهید، می توانید از راهنمایی های آنلاین برای انجام کارهای مشخص برنامه نویسی batch استفاده کنید.