فایلهای Batch با پسوند bat در ویندوز، مجموعهای از دستورات هستند که در واسط خط دستور یا پنجرهی cmd ویندوز اجرا میشود و امور بسیاری را میتوان به کمک آن انجام داد. از کار کردن با ابزارهای پیشرفتهای مثل ابزارهای تنظیمات شبکه و تنظیمات پاور آپشنز ویندوز گرفته تا تغییر نام و اسکن فایلها و جابجایی فایلها و فولدرها، همگی با دستوراتی که در command prompt تایپ شده، قابل انجام است. به عبارت دیگر فایل Batch در ویندوز، تقریباً تمام کارهایی که در واسط گرافیکی ویندوز انجام میدهیم را به کمک کامند پرامپت انجام میدهد.
در این مقاله با روش نوشتن فایلهای bat و اجرای آنها آشنا میشویم و مثالهایی را بررسی میکنیم. با ما باشید.
قبلاً مقالهای در خصوص تبدیل کردن یک فایل bat به فایل اجرایی با پسوند exe تهیه کردیم. در حقیقت فایل bat مجموعهای از دستورات است و اگر با دسترسی ادمین آن را اجرا کنیم، تقریباً انجام هر کاری در محیط ویندوز ممکن است!
چگونه یک فایل Batch در ویندوز ایجاد کنیم؟ نحوه چاپ کردن جملات و نام فایل bat
فایل Bat اساساً یک فایل متنی ساده است. لذا ابتدا روی فضای خالی دستاپ یا فولدری که باز کردهاید، راستکلیک کنید و گزینهی New و سپس Text Document را انتخاب کنید.
اکنون نام فایل را test.bat بگذارید. توجه کنید که پسوند فایل متنی txt است اما پسوند فایل Batch دارای پسوند bat است. طبعاً ویندوز از شما سوال میکند که آیا مطمئن هستید که تغییر اکستنشن فایل به bat صحیح است؟ روی Yes کلیک کنید.
در ادامه روی فایل ایجاد شده راست کلیک کنید و گزینهی Edit را انتخاب نمایید. فایل توسط notepad ویندوز باز میشود. میتوانید از نرمافزار پیشرفتهتری مثل Notepad++ نیز برای باز کردن این فایل و ویرایش دستورات استفاده کنید.
در فایل bat میبایست هر دستور را در خط جدیدی وارد کنید. با استفاده از دستور eche به چاپ جملات دلخواه بپردازید تا توضیحاتی به کاربر بدهید. به عنوان مثال برای چاپ کردن عبارت Press any key to continue ... که به معنی «کلیدی را برای ادامهی کار فشار دهید» است، از دستور زیر استفاده کنید:
@echo Press any key to continue ...
اگر میخواهید نام و توضیحی برای فایل bat در ابتدای آن اضافه کنید، از دستور @echo off و در خط بعدی، title و سپس توضیحات خود، استفاده کنید. توجه کنید که اگر عبارتهای فارسی وارد کنید، معمولاً مشکلات عجیبی به وجود میآید و اسکریپت شما کار نخواهد کرد.
به عنوان مثال در فایل زیر پس از title توضیحات نوشته شده و در خط بعدی با دستور echo عبارتی چاپ شده است. برای جلوگیری از بسته شدن پنجرهی cmd پس از اجرای اسکریپت، از عبارت pause در خط بعدی استفاده کنید.
@echo off
title some random NAME and Description
echo Press a Key ...
pause
نتیجه را در تصویر زیر بررسی کنید:
آموزش ساخت فایل 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 را مشاهده کنید:
سوییچ -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 است. بنابراین بخشی از خروجی را برش زدهام. توجه کنید که مکآدرس کامپیوتر را برای حفظ امنیت، به کسی نشان ندهید:
باز کردن چند سایت در تبهای مختلف با یک فایل bat ساده
فایل txt جدیدی ایجاد کنید و نام آن را News یا نامی آشنا بگذارید و مثل قبل، پسوند را bat انتخاب کنید. در ادامه روی فایل راستکلیک کرده و Edit را انتخاب کنید. متن زیر را پیست کنید و به جای نام سایتها، نام سایتهای موردعلاقهی خود را وارد کنید:
@echo off
start "" http://www.msnbc.com
start "" https://news.google.com/
start "" https://it-planet.ir
دستور start و سوییچ "" پس از آن، به این معنی است که سایت در تب جدید در مرورگر پیشفرض باز شود. اسکریپت خود را سیو کنید و روی آن دبلکلیک کنید. سایتها در تبهای مختلف باز میشوند. میتوانید این اسکریپت را در تسکبار ویندوز ۱۰ پین کنید و با یک کلیک، تمام سایتهای پرکاربرد خود را باز کنید!
اسکریپت 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 استفاده میشود.
نتیجهی اجرا کردن اسکریپت فوق این است که فایلها به صورت مرتبشده در پوشههای مختلف قرار میگیرند:
دستوراتی کاربردی برای نوشتن فایل bat در ویندوز
در ادامه به دستوراتی که معمولاً در نوشتن اسکریپتها کاربرد دارد، میپردازیم. به موارد زیر توجه کنید:
با دستور @echo off اسکریپت bat پس از اجرا بسته میشود و اثری از آدرس آن در پنجرهی cmd باقی نخواهد ماند.
با دستور title میتوان توضیحاتی برای فایل bat نوشت و همانطور که پیشتر دیدیم، پس از اجرا کردن فایل، در نوار عنوان نیز نمایان میشود.
pause از بسته شدن پنجرهی cmd جلوگیری میکند و به علاوه اجرای دستورات را متوقف میکند. عبارت Press any key to continue… نیز به معنی توقف کردن قبل از ادامهی کار است.
با دستور cls میتوان پنجرهی cmd را پاکسازی کرد تا تمیز و خلوت به نظر برسد.
با دستور rem که مخفف remark است، میتوان توضیحاتی برای دستورات در فایل bat اضافه کرد که در خروجی نمایش داده نمیشود و صرفاً توضیحی برای کسانی است که اسکریپت را بررسی و ویرایش میکنند. شاید در آینده بخواهید اسکریپت خود را ادیت کنید، در این صورت توضیحات اضافی برای دستورات جدید و پیچیده، کمک شایانی به شما خواهد کرد.
%%a به معنی کار با تکتک فایلهای موجود در فولدری است که فایل bat در آن اجرا میشود.
(“.\”) به معنی فولدر ریشهای است. برای هدایت کردن و اجرای دستورات در پوشههای دیگر، ابتدا از فولدر ریشه شروع میکنیم و آدرسدهی را ادامه میدهیم.
start “” [website] با این دستور میتوان یک وبسایت را در مرورگر پیشفرض باز کرد.
makeuseofسیارهی آیتی
سلام، من یه فایل .vbs دارم که میخوام تبدیلش کنم به exe که بتونم تو سرویس های ویندوز اضافش کنم، چطور میتونم این کارو بکنم؟
با دستور New-Service -Name “YourServiceName” -BinaryPathName .exe تست کردم، ولی فایل .vbs رو استارت نمیکنه. ممنون میشم کمکم کنید. سپاس از آموزش خوبتون
سلام
من یه فولدر دارم که یه سری فایل داخلش هست. هر روز هم فایل داخلش اضافه میشه
حالا میخواستم یه دستور بنویسم که هر وقت اجراش کردم بیاد فایلهای توی این فولدر رو تک به تک بررسی کنه و فایلهایی که تاریخ ساخته شدنشون از 40 روز میگذره رو توی یه فولدر دیگه انتقال بده
ممنون میشم راهنمایی کنید