فایل‌های Batch‌ با پسوند bat در ویندوز، مجموعه‌ای از دستورات هستند که در واسط خط دستور یا پنجره‌ی cmd ویندوز اجرا می‌شود و امور بسیاری را می‌توان به کمک آن انجام داد. از کار کردن با ابزارهای پیشرفته‌ای مثل ابزارهای تنظیمات شبکه و تنظیمات پاور آپشنز ویندوز گرفته تا تغییر نام و اسکن فایل‌ها و جابجایی فایل‌ها و فولدرها، همگی با دستوراتی که در command prompt تایپ شده، قابل انجام است. به عبارت دیگر فایل Batch در ویندوز، تقریباً تمام کارهایی که در واسط گرافیکی ویندوز انجام می‌دهیم را به کمک کامند پرامپت انجام می‌دهد.

در این مقاله با روش نوشتن فایل‌های bat و اجرای آنها آشنا می‌شویم و مثال‌هایی را بررسی می‌کنیم. با ما باشید.

قبلاً مقاله‌ای در خصوص تبدیل کردن یک فایل bat به فایل اجرایی با پسوند exe تهیه کردیم. در حقیقت فایل bat مجموعه‌ای از دستورات است و اگر با دسترسی ادمین آن را اجرا کنیم، تقریباً انجام هر کاری در محیط ویندوز ممکن است!

چگونه یک فایل Batch در ویندوز ایجاد کنیم؟ نحوه چاپ کردن جملات و نام فایل bat

فایل Bat اساساً یک فایل متنی ساده است. لذا ابتدا روی فضای خالی دستاپ یا فولدری که باز کرده‌اید، راست‌کلیک کنید و گزینه‌ی New و سپس Text Document را انتخاب کنید.

آموزش اسکریپت‌نویسی و فایل Batch‌ در ویندوز با دستورات cmd

اکنون نام فایل را test.bat بگذارید. توجه کنید که پسوند فایل متنی txt است اما پسوند فایل Batch دارای پسوند bat است. طبعاً‌ ویندوز از شما سوال می‌کند که آیا مطمئن هستید که تغییر اکستنشن فایل به bat صحیح است؟ روی Yes کلیک کنید.

آموزش اسکریپت‌نویسی و فایل Batch‌ در ویندوز با دستورات cmd

در ادامه روی فایل ایجاد شده راست کلیک کنید و گزینه‌ی Edit را انتخاب نمایید. فایل توسط notepad ویندوز باز می‌شود. می‌توانید از نرم‌افزار پیشرفته‌تری مثل Notepad++ نیز برای باز کردن این فایل و ویرایش دستورات استفاده کنید.

آموزش اسکریپت‌نویسی و فایل Batch‌ در ویندوز با دستورات cmd

در فایل bat می‌بایست هر دستور را در خط جدیدی وارد کنید. با استفاده از دستور eche‌ به چاپ جملات دلخواه بپردازید تا توضیحاتی به کاربر بدهید. به عنوان مثال برای چاپ کردن عبارت Press any key to continue ... که به معنی «کلیدی را برای ادامه‌ی کار فشار دهید» است، از دستور زیر استفاده کنید:

@echo Press any key to continue ...

اگر می‌خواهید نام و توضیحی برای فایل bat در ابتدای آن اضافه کنید، از دستور @echo off و در خط بعدی، title و سپس توضیحات خود، استفاده کنید. توجه کنید که اگر عبارت‌های فارسی وارد کنید، معمولاً مشکلات عجیبی به وجود می‌آید و اسکریپت شما کار نخواهد کرد.

آموزش اسکریپت‌نویسی و فایل Batch‌ در ویندوز با دستورات cmd

به عنوان مثال در فایل زیر پس از title توضیحات نوشته شده و در خط بعدی با دستور echo عبارتی چاپ شده است. برای جلوگیری از بسته شدن پنجره‌ی cmd پس از اجرای اسکریپت، از عبارت pause در خط بعدی استفاده کنید.

@echo off

title some random NAME and Description

echo Press a Key ...

pause

نتیجه را در تصویر زیر بررسی کنید:

آموزش اسکریپت‌نویسی و فایل Batch‌ در ویندوز با دستورات cmd

آموزش ساخت فایل bat برای ping کردن سایت‌ها

به دو مثال مفید و کاربردی می‌پردازیم. نحوه‌ی پینگ کردن به کمک یه فایل bat ساده. در cmd ویندوز با تایپ کردن دستور زیر می‌توان دسترسی و تأخیر در دسترسی به سایتی مثل گوگل را بررسی کرد. نتیجه تایم پینگ و TTL و آی‌پی سرورهای گوگل خواهد بود.

ping google.com -t

در فایل متنی دستورات زیر را وارد کنید تا توضیحاتی برای اسکریپت پینگ گوگل و در ادامه عمل پینگ را داشته باشیم:

@echo off

title pinging www.GOOGLE.com

echo TEST: Pinging Google

ping google.com -t

و نتیجه‌ی دبل‌کلیک کردن روی این فایل bat را مشاهده کنید:

آموزش اسکریپت‌نویسی و فایل Batch‌ در ویندوز با دستورات cmd

سوییچ -t به این معنی است که دستور پینگ مرتباً تکرار شود و توقفی در کار نخواهد بود. بنابراین عبارت pause را حذف کردیم چرا که پنجره‌ی cmd بسته نخواهد شد. برای آشنایی بیشتر با مفهوم پینگ و تأخیر در دسترسی به سرورهای سایت‌ها، به مقاله‌ای که قبلاً تهیه کردیم مراجعه فرمایید:

آموزش نوشتن اسکریپت Batch برای دریافت شناسه‌ی IP و Mac Address کارت شبکه‌ها

یک لپ‌تاپ ویندوزی ساده، معمولاً سه کارت شبکه‌ی LAN (با پورت اترنت) و Wi-Fi و بلوتوث دارد و ممکن است چند کارت شبکه‌ی مجازی نیز به روش‌های نرم‌افزار اضافه شده باشد. هر کارت شبکه یک شناسه‌ی IP و مک آدرس دارد. اگر بخواهید با یک دستور ساده، تمام شناسه‌ها و Mac Addressها را رویت کنید، باید از دستور زیر استفاده کنید:

ipconfig /all

در واقع با تایپ کردن سوییچ /all می‌توان مشخصات تمام کارت شبکه‌ها را با یک دستور ساده مشاهده کرد. در فایل bat دستورات زیر را وارد کنید و توجه کنید که وجود pause برای جلوگیری از بسته شدن پنجره‌ی cmd، این بار الزامی است:

@echo off

title pinging www.GOOGLE.com

echo List of All IP and Mac Address

ipconfig /all

pause

نتیجه‌ی اجرای این دستور ممکن است طولانی باشد. با توجه به نام کارت شبکه‌ی واقعی خود، می‌توانید موردی که مدنظرتان است را به راحتی تشخیص دهید. به عنوان مثال من از دانگل USB برای دسترسی به شبکه‌ی Wi-Fi استفاده می‌کنم و چیپ‌ست آن ساخت RealteK است. بنابراین بخشی از خروجی را برش زده‌ام. توجه کنید که مک‌آدرس کامپیوتر را برای حفظ امنیت، به کسی نشان ندهید:

آموزش اسکریپت‌نویسی و فایل Batch‌ در ویندوز با دستورات cmd

باز کردن چند سایت در تب‌های مختلف با یک فایل bat ساده

فایل txt جدیدی ایجاد کنید و نام آن را News یا نامی آشنا بگذارید و مثل قبل، پسوند را bat انتخاب کنید. در ادامه روی فایل راست‌کلیک کرده و Edit را انتخاب کنید. متن زیر را پیست کنید و به جای نام سایت‌ها، نام سایت‌های موردعلاقه‌ی خود را وارد کنید:

@echo off

start "" http://www.msnbc.com

start "" https://news.google.com/

start "" https://it-planet.ir

دستور start و سوییچ "" پس از آن، به این معنی است که سایت در تب جدید در مرورگر پیش‌فرض باز شود. اسکریپت خود را سیو کنید و روی آن دبل‌کلیک کنید. سایت‌ها در تب‌های مختلف باز می‌شوند. می‌توانید این اسکریپت را در تسک‌بار ویندوز ۱۰ پین کنید و با یک کلیک، تمام سایت‌های پرکاربرد خود را باز کنید!

آموزش اسکریپت‌نویسی و فایل Batch‌ در ویندوز با دستورات cmd

اسکریپت bat برای مرتب کردن فایل‌ها با پسوندهای مختلف در پوشه‌های مختلف

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

@echo off

rem For each file in your folder

for %%a in (".\*") do (

rem check if the file has an extension and if it is not our script

if "%%~xa" NEQ ""  if "%%~dpxa" NEQ "%~dpx0" (

rem check if extension folder exists, if not it is created

if not exist "%%~xa" mkdir "%%~xa"

rem Move the file to directory

move "%%a" "%%~dpa%%~xa\"

))

عبارت if به معنی اگر و عبارت not exist‌ به معنی وجود نداشتن و دستور move برای جابجا کردن فایل‌ها که با عبارت %%a مشخص شده، به کار می‌روند. دستورات فوق کمی پیچیده است و پس از مدتی اسکریپت‌نویسی با مفهومشان به خوبی آشنایی پیدا می‌کنید. در خط دوم پس از عبارت rem، توضیحاتی در باب دستورات بعدی نوشته شده که صرفاً توضیح است و چاپ یا اجرا نمی‌شود. به عبارتی برای یادداشت‌گذاری در اسکریپت‌ها، از rem استفاده می‌شود.

نتیجه‌ی اجرا کردن اسکریپت فوق این است که فایل‌ها به صورت مرتب‌شده در پوشه‌های مختلف قرار می‌گیرند:

آموزش اسکریپت‌نویسی و فایل Batch‌ در ویندوز با دستورات cmd

دستوراتی کاربردی برای نوشتن فایل bat در ویندوز

در ادامه به دستوراتی که معمولاً در نوشتن اسکریپت‌ها کاربرد دارد، می‌پردازیم. به موارد زیر توجه کنید:

با دستور @echo off اسکریپت bat پس از اجرا بسته می‌شود و اثری از آدرس آن در پنجره‌ی cmd‌ باقی نخواهد ماند.

با دستور title می‌توان توضیحاتی برای فایل bat نوشت و همان‌طور که پیش‌تر دیدیم، پس از اجرا کردن فایل، در نوار عنوان نیز نمایان می‌شود.

pause از بسته شدن پنجره‌ی cmd جلوگیری می‌کند و به علاوه اجرای دستورات را متوقف می‌کند. عبارت Press any key to continue… نیز به معنی توقف کردن قبل از ادامه‌ی کار است.

با دستور cls می‌توان پنجره‌ی cmd را پاکسازی کرد تا تمیز و خلوت به نظر برسد.

با دستور rem که مخفف remark است، می‌توان توضیحاتی برای دستورات در فایل bat اضافه کرد که در خروجی نمایش داده نمی‌شود و صرفاً توضیحی برای کسانی است که اسکریپت را بررسی و ویرایش می‌کنند. شاید در آینده بخواهید اسکریپت خود را ادیت کنید، در این صورت توضیحات اضافی برای دستورات جدید و پیچیده، کمک شایانی به شما خواهد کرد.

%%a به معنی کار با تک‌تک فایل‌های موجود در فولدری است که فایل bat در آن اجرا می‌شود.

(“.\”) به معنی فولدر ریشه‌ای است. برای هدایت کردن و اجرای دستورات در پوشه‌های دیگر، ابتدا از فولدر ریشه شروع می‌کنیم و آدرس‌دهی را ادامه می‌دهیم.

start “” [website] با این دستور می‌توان یک وب‌سایت را در مرورگر پیش‌فرض باز کرد.