کامپیوتر، شبکه

کپی برداری از مطالب  وبلاگ با ذکر منبع مجاز است.

آموزش Batch Programing

دوشنبه بیست و پنجم تیر ۱۳۹۷ 15:42

ساخت فایلهای Batch به شما اجازه میدهد کارهای خود را به صورت یکجا در یک فایل متنی مشخص کنید. تا در زمان انجام کارهای روزانه صرفه جویی کنید. یعنی ساخت برنامه ای که کارهای شما را به صورت خودکار انجام دهد.

نکته: برای ساخت حرفه ای تر فایلهای Batch نیاز به یاد گرفتن دستورات CMD دارید. یعنی هر چه بیشتر از دستورات CMD بدانید فایل Batch حرفه ای تر میتوانید بسازید. اگر تازه کار هستید پیشنهاد میدهم به آموزش CMD سر بزنید.

فایل Batch چیست؟

فایلهای Batch در واقع دارای فهرستی از دستورات CMD در ویندوز میباشند که به صورت غیر تعاملی اجرا میشوند. یعنی یک سری دستور که با قواعد Batch Programing نوشته شده اند و به صورت خودکار و بدون نیاز به دخالت افراد اجرا میشوند. برای مثال زمانی که میخواهید چند کار را پشت سر هم انجام دهید نیاز دارید تا ابتدا به کار اول رسیدگی کنید سپس به کار دوم و سوم و … اما اگر یک فایل Batch بسازید همه کارهای خود را میتوانید در یک حرکت انجام دهید.

چگونه یک فایل Batch بسازیم؟

برای ساخت فایل Batch ابتدا در مکان مورد نظر خود همانند Desktop کلیک راست کرده سپس از گزینه New روی Text Documents کلیک کنید. تا یک فایل متنی ایجاد شود. حال پسوند فایل متنی که txt. میباشد را به Bat. یا cmd. تغییر دهید. معمولا پس از تغییر هشداری مبنی بر: (در صورت تغییر پسوند ممکن است فایل شما غیر قابل استفاده شود) را مشاهده کنید که باید روی گزینه Yes کلیک کنید. پس از تغییر پسوند آیکون فایل متنی به چرخ دنده تغییر خواهد نمود:

ساخت فایل Batch

نکته: در صورت مشاهده نکردن پسوند فایلها ابتدا باید از تب View در Folder Option تیک گزینه Hide Extension for known File Types را بردارید. تا کلیه پسوندها نمایش داده شود.

پس از تغییر نام فایل روی آن کلیک راست نموده سپس روی گزینه Edit کلیک کنید تا ویرایشگر Notepad باز شود. اولین دستور برای ساخت فایل Batch دستور Echo off@ میباشد. که مشخص میکند این یک فایل غیر تعاملی یا Non-Interactive است. پس در اولین سطر Echo off@ را تایپ کنید.

@Echo off

حال برای نمایش یک متن خاص باید از دستور Echo به همراه متن مورد نظر استفاده کنید. اما در سطر دوم یا سطر سوم که خالی باشد:

@Echo off

Echo This File is My First Batch Programing File.

برای نمایش یک سطر خالی در نتایج فایل Batch دستور Echo را به همراه یک نقطه تایپ کنید. برای مثال:

@Echo off

Echo.

Echo This File is My First Batch Programing File.

نکته: بهتر است بعد از ایجاد هر تغییر فایل Batch را Save کرده و حاصل آن را با دو بار کلیک رو فایل مشاهده کنید. اگر فقط از دستور Echo استفاده کرده باشید فایل به سرعت نمایش داده شده و بسته میشود. برای ایجاد توقف باید از دستور Pause در آخر متن استفاده کنید برای مثال:

@Echo Off

Echo.

Echo This File is My First Batch Programing File.

Pause

Echo Command

پس دستور Echo off@ برای مشخص نمودن Non-Interactive بودن فایل بود. دستور .Echo هم برای نمایش سطر خالی استفاده میشود. و دستور Echo به همراه پیام مورد نظر برای نمایش پیام مورد نظر شما است. دستور Pause هم برای توقف استفاده میشود.

آزمایشگاه: با آنچه که تا به حال یاد گرفته اید یک فایل Batch بسازید و فهرستی از مطالب خود را به صورت Non-Interactive به نمایش در بیاورید.

مشخص نمودن عنوان در Batch File

برای مشخص کردن یک عنوان باید از دستور Title در فایل Batch استفاده کنید. کافیست تا دستور Title را به همراه عنوان مورد نظر خود بعد از دستور Echo off@ تایپ کنید:

@Echo off

Title TML-MANAGER.IR

مشخص نمودن رنگ در Batch File

برای مشخص نمودن رنگ متن و رنگ صفحه باید از دستور Color استفاده کنید. مثلا برای داشتن متن سبز در صفحه مشکی:

Color 0a

در دستور بالا ابتدا عدد 0 رنگ صفحه را مشخص میکند و حرف a رنگ متن را، برای دیدن فهرست رنگها کافیست از دستور ?/ Color در محیط CMD استفاده کنید.

مشخص نمودن ابعاد صفحه در Batch File

برای مشخص نمودن تعداد لاین ها و حرف ها در ابعاد صفحه اجرایی فایل Batch باید از دستور Mode به همراه پارامتر Con و پارامتر Lines و پارامتر Cols استفاده کنید برای مثال:

Mode Con Cols=80 Lines=40

بگذارید آنچه که تا اینجا توضیح دادم را در یک مثال برایتان نمایش دهم:


@Echo off

Title TML-MANAGER.IR

Color 0a

Mode con Lines=40 Cols=80

Echo.

Echo _________________________

Echo.

Echo How are you?

Echo.

Echo _________________________

Echo.

Echo Can I Help You?

Echo.

Echo _________________________

Echo.

Pause



منبع


 

کدهای برگشتی در فایل Batch

 

یکی از مهمترین مباحث در Batch Programming کدهای برگشتی یا Return Code میباشد. کدهای برگشتی به شما کمک میکنند تا از نتیجه دستورات و برنامه های اجرا شده آگهی پیدا کنید. در ادامه تی ام ال منیجر را در آموزش کدهای برگشتی در فایل Batch دنبال کنید.

زمانیکه یک دستور به درستی و با موفقیت اجرا میشود کد برگشتی آن صفر است ولی در صورتی که عملکرد آن با مشکل مواجه شود کد برگشتی آن غیر از عدد صفر میباشد. (عدد 1 یا بالاتر)

بررسی کدهای برگشتی در فایل Batch

یکی از Variable های پر اهمیت محیطی %ERRORLEVEL% نام دارد. %ERRORLEVEL% شامل آخرین کد برگشتی از برنامه یا Script های اجرا شده میباشد. اکثر دستورات خط فرمان مثل Echo و IF و Set مقدار موجود %ERRORLEVEL% را به خاطر میسپارند.

مرسوم ترین تکنیک برای بررسی عملکرد کدهای برگشتی استفاده از اپراتور NEQ یا Not Equal To در دستور IF میباشد.

IF %ERRORLEVEL% NEQ 0 (

    Echo Do Something Here to Address the Error

)

در دستور بالا گفته شده اگر عملکرد برنامه یا Script اجرا شده قبلی با خطا مواجه شود پیام Do Something Here to Address The Error را نمایش بده.

یکی دیگر از راههای که میتوان صحت عملکرد برنامه قبلی را بررسی نمود:

IF ERRORLEVEL 1

    Echo Do Something Here to Address the Error

)

استفاده نمودن از جمله ERRORLEVEL 1 صحیح میباشد. اما مشکل آن این است که شاید برنامه اجرا شده عدد منفی یا مثبت را ارسال کند. معمولا کمتر برنامه ای موجود میباشد که کلیه کدهای بازگشتی را سند کرده باشد به همین خاطر استفاده کردن از NEQ 0 بهتر از باقی روشها در خطا یابی میباشد.

برای بررسی نمودن یک کد مشخص میتوانید آن را با EQU وارد کنید. مثلا میتوانید یک برنامه یا Script را اجرا کنید و کد خروجی 9009 را بررسی کنید.

Program.exe

IF %ERRORLEVEL% EQU 9009 (

                                       ECHO Error – Program.exe Not Found in Your Path

)

در دستور بالا گفته شده اگر برنامه Program.exe با کد 9009 مواجه شد پیام Program.exe Not Found In Your Path را نمایش بده.

اجرای شرطی دستورات با استفاده از کد برگشتی

شما به سادگی میتوانید یک دستور را طبق شرایط مشخص شده با کدهای برگشتی اجرا کنید. مثلا اگر برنامه قبل به درستی کار خود را انجام داد باشد دستور X اجرا شود.

یک راه ساده و سریع برای اجرای یک دستور در صحت عملکرد دستور قبل استفاده از دو علامت && میباشد. به مثال ریز توجه کنید:

Program.exe && Echo Your Program Work Successfully

به صورت کلی از علامت & برای اجرای دستور دیگر در همان خط فعلی استفاده میشود. ولی در بالا از دو علامت && استفاده شده که به معنای اجرای دستور بعد و بررسی صحت عملکرد دستور قبل میباشد. که در صورت اجرا شدن بدون مشکل پیام نوشته شدن در جلوی دستور Echo نمایش داده شود.

برای تشخیص کارکرد صحیح از دو علامت && استفاده میشود ولی برای تشخیص مشکل از دو علامت || استفاده میشود. به مثال زیر توجه کنید:

Program.exe || Echo Program.exe Failed with Return Code %ERRORLEVEL%

یکی از روشهای ساده برای جلوگیری از اشتباه استفاده از دستور Exit به همراه پارامتر /B میباشد. (این دستور برای خروج از فایل Batch مورد استفاده قرار میگیرید نه اجرای عادی CMD)  پس از پارامتر /B باید کد مشخص کننده خطا را درج کنید. برای مثال:

Program.exe || Exit /B 1

اگر بخواهم یک روش دیگر همانند تکنیک بالا را برایتان توضیح دهم استفاده از دستور goto به همراه برچسب :EOF میباشد. EOF از سه کلمه End Of File تشکیل شده و باعث خروج یا بسته شدن فایل Batch میشود. به مثال توجه کنید:

Program.exe || GOTO :EOF

چند نکته برای کدهای برگشتی در فایل Batch

همیشه سعی کنید از کد صفر برای بررسی عملکرد موفق برنامه ها استفاده کنید. چرا که معمولا دیگر برنامه های فراخوان از IF ERRORLEVEL 1 برای بررسی فایل Batch استفاده میکنند.

یکی دیگر از کارهای که باید انجام دهید استفاده نمودن از دستور SET برای سند کردن کدهای برگشتی در فایل Batch میباشد

SET /A ERROR_HELP_SCREEN=1

SET /A ERROR_FILE_NOT_FOUND=2

با سند سازی از کدهای برگشتی در اول فایلهای Batch کار خود را در ارزیابی عملکرد دستور ها و برنامه راحت کنید.

 

 

ورودی های و خروجی ها Standard 

ورودی های و خروجی ها Standard (آشنایی با مفهوم های STDIN و STDOUT و STDERR)

یکی از مباحثی که برای یادگیری بهتر Batch Programming نیاز به دانستن آن دارید. ورودی ها و خروجی ها (I/O) استاندارد میباشند. به صورت کلی سه نوع I/O وجود دارد که از قرار زیر میباشند.

ورودی استاندارد یا Standard Input که به اختصار STDIN گفته میشود. هر آنچه که شما با کیبورد تایپ میکنید STDIN میشود یعنی وارد شده های شما توسط کیبورد.

خروجی استاندارد یا Standard Output که به اختصار STDOUT گفته میشود. هر آنچه که با کیبورد وارد نموده اید و توسط مانیتور نمایش داده میشود را STDOUT میگویند. در واقع آنچه را که از مانیتور به عنوان خروجی میبینید STDOUT گفته میشود.

خروجی خطا یا Standard Error که به اختصار STDERR گفته میشود. STDERR هم همانند STDOUT میباشد با این تفاوت که به صورت مستقل برای نمایش خطا استفاده میشود.

هر کدام از سه استاندارد ذکر شده دارای یک کد انحصاری برای خود میباشند. استاندارد STDIN با کد 0 مرجع شده استاندارد STDOUT با کد 1 مرجع شده و استاندارد STDERR با کد 2 مرجع شده.

نام کامل استاندارد نام مختصر استاندارد کد استاندارد
Standard Input STDIN 0
Standard Output STDOUT 1
Standard Error STDERR 2

 

تغییر مسیر یا Redirection

یکی از وظیفه های عمومی در فایلهای Batch ارسال یا انتقال خروجی برنامه ها به فایلهای متن یا Log میباشد. شما به سادگی میتوانید با علامت یا اپراتور > خروجی برنامه ها را که STDOUT یا STDERR میباشند به یک فایل دیگر ارسال یا منتقل کنید. به مثال زیر توجه کنید:

DIR > Dirlist.txt

دستور بالا خروجی دستور DIR را بجای ارسال به مانیتور به فایل Dirlist.txt منتقل میکند. توجه کنید اگر فقط از یک علامت > استفاده کنید فایل Dirlist.txt بازنویسی یا Overwrite میشود. اما اگر از دو علامت >> استفاده کنید خروجی های جدید به زیر اطلاعات یا خروجی های قبلی منتقل میشوند. پس دیگر عمل بازنویسی یا Overwrite اتفاق نمی افتد. به مثال زیر توجه کنید:

Dir D:\ >>Dirlist.txt

به صورت پیشفرض با استفاده از اپراتور های > و >> خروجی STDOUT ارسال میشود. اما برای ارسال STDERR میتوانید از اعداد مرجع آنها استفاده کنید. برای مثال:

Dir Document.txt 2>>Dirlist.txt

برای ارسال هر دو استاندارد STDERR و STDOUT به یک فایل میتوانید از دستور زیر استفاده کنید:

Dir Document.txt > output.txt 2>&1

تا اینجا از علامت های > و >> برای خروجی گرفتن از دستورات استفاده شده اما برای ورودی گرفتن یا STDIN باید از علامت < استفاده کنید. در واقع بجای ورودی گرفتن از کیبورد میتوانید از یک فایل متنی با علامت < ورودی بگیرید. به مثال زیر توجه کنید:

Sort < Textfile.txt

سرکوب نمودن خروجی برنامه ها

شما به سادگی میتوانید خروجی برنامه ها را سرکوب کنید یا از بین ببرید. یعنی نه خروجی از مانیتور نمایش داده شود نه به فایل خاصی منتقل شود. برای سرکوب نمودن خروجی برنامه ها باید از علامت > به همراه کلمه NUL استفاده کنید. به مثال زیر توجه کنید:

Ping 4.2.2.4 >NUL

در دستور بالا فرایند Ping گرفتن از آدرس 4.2.2.4 انجام میشود اما هیچ خروجی از آن نمایش داده نمیشود.

انتقال خروجی یک برنامه به ورودی یک برنامه دیگر

یکی دیگر از ویژگیهای که در CMD و فایلهای Batch وجود دارد انتقال STDOUT یک برنامه به STDIN یک برنامه دیگر میباشد. مثلا شما میتوانید خروجی برنامه DIR را به صورت مستقیم به برنامه More ارسال کنید. تا بتوانید نتایج دستور DIR را به درستی و به اندازه صفحه خط فرمان مشاهده کنید. برای انتقال STDOUT به STDIN باید از علامت | استفاده کنید. به مثال زیر توجه کنید:

DIR /s | More

به فرایند انتقال خروجی یک برنامه (STDOUT) به ورودی یک برنامه (STDIN) دیگر Piping گفته میشود.

ساخت فایل متن با ورودی CON

شما به سادگی میتوانید با ارسال STDIN کیبورد به STDIN برنامه CMD که CON نام دارد یک فایل متنی بسازید. برای مثال:

TYPE CON > Documents.txt

Hello World

پس از نوشتن محتوای خود با فشردن کلید F6 و زدن کلید Enter خروجی برنامه خود را در فایل متنی Documents.txt ذخیره کنید.


 

دستور SET در فایل Batch

 

یکی از ویژگیهای Batch Programming برای راحت نمودن فرایند ساخت فایل Batch استفاده از Variable ها میباشد. کار Variable چیست؟ برای توضیح کار Variable میتوان به دستور %TEMP% اشاره نمود. همانطور که میدانید %TMEP% در واقع یک پوشه در آدرس C:\Users\Username\AppData\Local\Temp میباشد. زمانی که شما %TEMP% را در Run تایپ میکنید آدرس مذکور در سیستم شما بالا می آید. کار Variable هم دقیقا همین است ساخت یک کلمه متغییر برای انجام یک فرایند مشخص. شما میتوانید با دستور SET در فایل Batch یک Variable با یک عمل مشخص بسازید.

استفاده از Variable به شما اجازه میدهد تا نیاز به تایپ مجدد جمله های تکراری را نداشته باشید. و بجای آنها از متغیر های ساخته شده استفاده کنید. البته Variable فقط برای خلاصه سازی استفاده نمیشود. بلکه مزیت های دیگری هم دارد که در فصول بعد به آنها اشاره خواهیم نمود.

همانطور که گفتم برای ساخت Variable باید از دستور SET استفاده کنید. نحوه ساخت Variable به این صورت میباشد: ابتدا دستور Set را وارد کنید، سپس نام مورد استفاده Variable خود را مشخص نموده و پس از آن یک علامت مساوی بگذارید. پس از علامت مساوی محتوای Variable خود را مشخص کنید. برای مثال:

Set tml=TML-MANAGER.IR

دستور بالا یک Variable با نام tml و محتوای TML-MANAGER.IR درست میکند.

برای نمایش محتوای Variable ها میتوان از دستور echo استفاده نمود. برای اینکار، ابتدا دستور Echo را تایپ کنید سپس اسم variable را در بین %% قرار داده تا محتوای Variable به صورت متنی نمایش داده شود برای مثال:

Echo %temp%

ساخت Variable با دستور SET

ویندوز دارای Variable های خاص خود میباشد که هر کدام از آنها وظیفه مشخص را انجام میدهند. برای فهرست گیری از Variable های موجود در ویندوز، باید از دستور SET استفاده کنید (بدون پارامتر). برای مثال:

SET

حال بگذارید ویژگی Variable را در فایل Batch نشان دهم. به مثال زیر توجه کنید.

@echo off

Title Why Use Variables

SET ls=D:\Data\Backup\Linux\Softwares\

XCopy /s F:\ %ls%

XCopy /s G:\ %ls%

Dir %ls%

در مثال بالا ابتدا با دستور SET یک Variable با نام ls ساخته شد که محتوای آن D:\Data\Backup\Linux\Softwares\ میباشد. سپس در دستورات بعد بجای تایپ مسیر طولانی از Variable آن مسیر یعنی %ls% استفاده شد. که دقیقا کار همان مسیر را انجام میدهد.

دستور Set دارای دو پارامتر /a و /p میباشد. پارامتر /a برای محاسبات استفاده میشود یعنی مشخص میکند ورودی باید فقط عدد باشد. اما پارامتر /p برای دستی مشخص نمودن ورودی استفاده میشود. یعنی کاربر پس از تایپ دستور میتواند ورودی را مشخص کند. از پارامتر /p بیشتر برای ساخت منو ها استفاده میشود.

 

 

 

همانند زبانهای برنامه نویسی، Batch Programing هم دارای دستوراتی برای هوشمند سازی فعالیت ها در فایل Batch میباشد. مثلا زمانیکه میخواهید کار یا وظیفه خاصی را در فایل Batch انجام دهید. میتوانید مشخص کنید اگر اتفاق X افتاد عمل 1 را انجام بده در غیر این صورت عمل 2 را انجام بده. در واقع از دستور IF برای اجرای شرطی برنامه ها در فایلهای Batch استفاده میشود.

دستور IF را میتوان برای سه هدف مختلف استفاده نمود:

یک: برای بررسی از صحت عملکرد برنامه ها یا Script های قبلی (ERRORLEVEL).

IF [NOT] ERRORLEVEL number command

دو: برای مقایسه از همسان بودن دو رشته (String) مختلف (String).

IF [NOT] string1==string2 command

سه: برای بررسی از وجود داشتن یا نداشتن فایلها و پوشه ها (EXIST).

IF [NOT] EXIST filename command

در بخش بالا مثال های از دستور IF را به همراه نمونه ای از دستورات آن مشاهده میکنید.

  1. از کلمه NOT برای معکوس نمودن بررسی دستور IF استفاده میشود.
  2. از Variable یا متغیر ERRORLEVEL برای بررسی کد برگشتی دستور قبل استفاده میشود.
  3. بجای Number باید از کد برگشتی مناسب استفاده کنید.
  4. بجای Command باید دستور مورد نظر خود را وارد کنید.
  5. رشته یا String1 در واقع یک مقدار برای بررسی و مقایسه آن با String2 میباشد.
  6. از کلمه Exist برای بررسی از وجود فایلها و پوشه ها استفاده میشود.

بررسی عملکرد برنامه قبلی

همانطور که گفتم برای بررسی از صحت عملکرد برنامه های اجرا شده، باید از Variable یا متغیر ERRORLEVEL استفاده کنید. برای مثال:

@ECHO OFF

Ping 4.2.2.4

IF ERRORLEVEL 0 ECHO Your Ping Was Successful

Pause

در دستور بالا گفته شده اگر کار برنامه Ping به درستی انجام شود. پیام Your Ping Was Successful را نمایش بده.

دستور IF دارای پنج Compare-op یا Operator برای بررسی هوشمندانه تر کد ها میباشد. استفاده از Compare-op به شما اجازه میدهد اعداد بالاتر و پایین تر کد ها را نیز بررسی کنید. در ادامه اسم این Compare-op ها را مشاهده میکنید:

EQU – Equal

NEQ – Not Equal

LSS – Less Than

LEQ – Less Than or Equal

GTR – Greater Than

معنای Compare-op های بالا از قرار (EQU یعنی مساوی است با) – (NEQ یعنی مساوی نیست با) – (LSS یعنی کمتر است از) – (LEQ یعنی کمتر یا مساوی است با) – (GTR یعنی بزرگتر است از) میباشد.

برای استفاده از Operator های بالا یا همان Compare-op ها باید نحوه استفاده از دستور به این شکل میشود:

Ping 4.2.2.4

IF %ERRORLEVEL% NEQ 0 (

    ECHO Operation Failed

)

Pause

در دستور بالا گفته شده اگر کد برگشتی با عدد 0 مساوی نبود پیام Operation Failed را نمایش بده.

مقایسه دو Strings با یکدیگر

برای مقایسه دو String با یکدیگر باید از دو علامت == در بین String ها استفاده کنید. به مثال زیر توجه کنید.

@ECHO OFF

IF %TMP% == C:\Users\Home\AppData\Local\Temp Echo Both String Are Same

در دستور بالا گفته شده اگر %TMP% با آدرس C:\Users\Home\AppData\Local\Temp یکی بود پیام Both String Are Same را نمایش بده.

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

برای بررسی از وجود یک فایل یا پوشه در هارد دیسک باید از کلمه Exist استفاده کنید. برای مثال

IF EXIST %TMP% ECHO Temporary Folder Was Found

همانطور که میدانید %tmp% مشخص کننده پوشه Temp در آدرس C:\Users\AccountName\AppData\Local\Temp میباشد. اگر بخواهیم به صورت جزئی نگاه کنیم، دستور if exist به معنای “اگر وجود داشت” است سپس مقصود if exist با کلمه %tmp% مشخص شده. در آخر هم دستور echo برای نمایش پیغام Temporary Folder Was Found استفاده شده. به زبان ساده در دستور بالا گفته شده اگر پوشه %tmp% وجود داشت پیغام Temporary Folder Was Found را نمایش دهد.

به مثال معکوس شده دستور IF با کلمه NOT توجه کنید:

IF NOT EXIST %TMP% ECHO Temporary Folder Not Found

در مثال بالا بجای if exist از if not exist استفاده شده که به معنای “اگر وجود نداشت” میباشد (متضاد دستور if exist) سپس از کلمه %tmp% به عنوان مقصود if not exist استفاده شده و در آخر هم از دستور echo برای نمایش پیام Temporary Folder Not Found استفاده شده. پس به طور کلی کار دستور بالا برای بررسی کردن پوشه %tmp% میباشد. تا در صورت عدم وجود %tmp% پیغام Temporary Folder Not Found را نمایش دهد.

برای درک بهتر دستور IF بهتر است مثال های متعددی از دستور IF را بخوانید. سپس از آنها برای خود فایل های Batch بسازید. تا به صورت کامل دستور IF را درک کنید.


ساخت منو در فایل Batch

همانطور که در فصل اول آموزش Batch Programming گفتم ساخت فایل Batch به شما اجازه میدهد کارهای خود را به صورت خودکار یا زمانبندی شده انجام دهید. یکی دیگر از ویژگی های Batch Programming توانایی در ساخت منو است. یعنی به سادگی میتوانید برنامه ای بسازید که کاربر پایانی بتواند یکی از Option های ساخته شده شما را انتخاب کند. یعنی ساخت یک برنامه چند گزینه ای. در ادامه تی ام ال منیجر را با آموزش ساخت منو در فایل Batch همراهی کنید.

ایجاد منو در فایل Batch به سادگی آب خوردن میباشد. برای ساخت منو باید از Colon یا همان علامت نقل قول (:) در اول جمله استفاده کنید.

ساخت فهرست نمایشی منوها

برای شروع یک فایل Text بسازید سپس فرمت آن را به Bat یا cmd تغییر دهید. و از دستورات پایه (echo – title – color) برای مشخص نمودن منوی گرافیکی فایل Batch استفاده کنید. برای مثال:

@Echo off

Title Create Batch Menu

:Menu

Color 0a

Echo ______________________________________

Echo.

Echo Please Choose one of the following menu

Echo Press n for open notepad

Echo Press c for open calculator

Echo ______________________________________

تا اینجا فقط از دستورات فصل اول برای ساخت ظاهر منو یعنی نمایش Option های که کاربر پایانی میتواند از طریق آنها وظایف مشخص را انتخاب کند را بیان کردیم. و تنها مورد جدیدی که اضافه شده :menu میباشد. این مورد که در ابتدای آن : گذاشته شده مشخص کننده یک بخش در فایل Batch است. شما میتوانید با گذاشت علامت : بخش هی مختلف برای فایل Batch خود بسازید.

نکته: همانطور که گفتم علامت : برای مشخص نمودن بخشهای مختلف فایل Batch میباشد. شما میتوانید از هر کلمه ای به همراه علامت : برای مشخص نمودن یک بخش استفاده کنید. در ادامه فایده بخش بندی را متوجه خواهید شد.

ساخت ورودی های منو

اما دستوری که باید برای ساخت ورودی های منو از آن استفاده شود؛ دستور Set با پارامتر /p میباشد. از دستور Set برای تغییر یک Variable به Variable دیگر استفاده میشود. برای مثال:

SET /P M=Type n or c and Press Enter:

IF %M%==n goto Notepad

IF %M%==c goto Calculator

همانطور که گفتم دستور set برای تغییر یک Variable به Variable دیگر استفاده میشود. در بالا هم حرف M یک Variable یا متغیر میباشد که در جمله های پایین آن با دستور IF مشخص شده اگر همراه با Variable حرف M حرف N وارد شود با دستور Goto به بخش Notepad برود اما اگر با C وارد شد به بخش Calculator برود.

بخش بندی فایل Batch

حال باید بخش های مختلفی که در بالا مشخص نموده ایم را درست کنیم. در بالا دو بخش Notepad و Calculator مشخص شده که باید با علامت : این بخشها را بسازیم.

:Notepad

Start Notepad

exit

:Calculator

Start Calc

exit

در بالا دو بخش با نام های :NOTEPAD و :CALCULATOR ساخته شد که در هر بخش با دستور START برنامه مشخصی اجرا میشود. NOTEPAD همان برنامه ویرایشگر متن ویندوز میباشد و CALC هم همان ماشین حساب است. در آخر هر بخش از دستور Exit برای خروج از فایل Batch استفاده شده، حال بگذارید آن چرا که  به حال به صورت بخش بخش توضیح داده ام را یکجا در یک مثال برایتان بنویسم:

@Echo off

Title Create Batch Menu

:Menu

Color 0a

Echo ______________________________________

Echo.

Echo Please Choose one of the following menu

Echo Press n for open notepad

Echo Press c for open calculator

Echo ______________________________________

Echo.

SET /P M=Type n or c and Press Enter:

IF %M%==n goto Notepad

IF %M%==c goto Calculator

Goto Menu

:Notepad

Start Notepad

EXIT

:Calculator

Start Calc

EXIT

خلاصه آموزش ساخت منو در فایل Batch

در این فصل یک فایل Batch درست کردیم که دارای سه بخش میباشد: یک Menu دو Notepad سه Calculator برای مشخص کردن بخش های مختلف از علامت Colon یا همان نقل قول : استفاده کردیم. از دستور Echo برای ساخت فهرست ها استفاده شد و از دستور Set برای مشخص نمودن ورودی ها و تغییر Variable ها استفاده شد. از دستور IF برای مشخص نمودن شرایط دستور Set استفاده کردیم. در آخر از دستور Start برای فراخوانی برنامه های ویندوز مثل ماشین حساب (Calc) و ویرایشگر متن (Notepad) استفاده نمودیم.

تمرین: یک فایل Batch بسازید که در آن پنج منو مختلف برای انجام پنج وظیفه مختلف وجود داشته باشد.

 

 ساخت حلقه در فایل Batch با استفاده از دستور for
 

فرض کنید بیش از ده هزار فایل در درایوهای مختلف کامپیوتر خود دارید. از این ده هزار فایل دو هزار فایل آن با فرمت TXT میباشند و شما میخواهید فرمت تمام فایلهای متنی را از TXT به BAT تغییر دهید. یا اینکه از همه فایلهای متنی یک نسخه کپی در هارد اکسترنال خود تهیه نماید. به صورت عادی برای انجام چنین کاری باید برای تک تک فایلها زمان خاصی را صرف کنید تا ابتدا وارد درایو و پوشه آن فایلها شوید. سپس فایل را تغییر نام داده و یا از آن نسخه کپی تهیه نماید. در حالت عادی انجام چنین فرایندی حداقل چند ساعت زمان میبرد. اما با استفاده از دستور FOR در فایل Batch میتوانید این فرایند چند ساعته را به چند دقیقه کاهش دهید.

 

با استفاده از دستور FOR میتوانید یک عمل خاص را روی بیش از چند صد هزار فایل (بدون محدودیت) انجام دهید. دستور FOR که به عمل Loop هم معروف است به شما کمک میکند تا از نوشتن دستورات متعدد جلوگیری کنید. و کلیه کارهای خود را در یک دستور خلاصه کنید.

 

دستور FOR به شکل زیر نوشته میشود:

 
for {%variable|%%variable} in (set) do command [ CommandLineOptions]
 

برای استفاده از دستور FOR در حالت عادی Command Prompt باید از یک % در کنار Variable استفاده کنید. اما اگر میخواهید در فایل Batch از دستور FOR استفاده کنید باید از دو %% در کنار Variable استفاده کنید. استفاده از حروف بزرگ و کوچک در Variable با هم متفاوت است.

 

SET بخشی است که باید در آن یک یا چند فایل و پوشه و یا محدوده از مقدار ها را باید مشخص کنید. فایلها و پوشه های مشخص شده در بخش SET توسط دستور (Command) مورد پردازش قرار میگیرند.

 

Command همان دستوری است که میخواهید روی بخش SET تاثیر بگذارد.

 

Command Line Option پارامتر های که میخواهید از دستور مشخص شده در بخش Command مورد استفاده قرار بگیرند را باید مشخص کنید.

 

به مثال دستور FOR توجه کنید:

 
FOR %I IN (%USERPROFILE%\*) DO @ECHO %I
 

در دستور بالا گفته شده از فایلهای موجود در پوشه پروفایل فهرستی تهیه شود و با دستور ECHO این فایلها را نمایش داده شوند. به مثال بعدی توجه کنید:

 
FOR %I IN (%HOMEPATH%\DESKTOP\*.JPG) DO COPY %I F:\SHIFT\
 

نکته: علامت \* مشخص کننده کلیه فایلهای موجود در پوشه مشخص شده قبل از این علامت میباشد.

 

در دستور بالا گفته شده تمام فایلها با پسوند *.JPG را از پوشه Desktop به آدرس F:\SHIFT\ کپی کند.

 

اگر بخواهم فرایند بالا را به زبان ساده بیان کنم: ابتدا دستور FOR یک Variable با نام %I درست میکند که محتوای آن در بخش SET مشخص شده است. این محتوا شامل فایلهای JPG در آدرس %HOMEPATH%\DESKTOP میباشند. سپس با DO میگوید دستور Copy داده های دریافت شده از Variable یا متغیر %I را به آدرس F:\SHIFT\ کپی کند.

 

حال اگر بخواهید همین فرایند بالا را روی پوشه ها انجام دهید. باید از پارامتر /D بعد از دستور For استفاده کنید. به مثال زیر توجه کنید:

 
FOR /D %I IN (%TEMP%\*) DO ECHO %I
 

دستور بالا کلیه پوشه های موجود در آدرس %TEMP% را توسط دستور ECHO به نمایش میگزارد.

 

برای بررسی نمودن یک درایو از پوشه Root باید از پارامتر /R استفاده کنید.

 
FOR /R D: %I IN (.) DO ECHO %I
 

نکته: حرف نقطه در بین پرانتز مشخص کننده کلیه پوشه ها ممکن میباشد. اما اگر بخواهید کلیه فایلها را مشخص کنید باید از علامت * استفاده کنید. همچنین برای مشخص نمودن هر دو فایلها باید هر دو گزینه را وارد نموده و فقط یک علامت , پس از گزینه اول بگزارید. به مثال زیر توجه کنید:

 
FOR /R D: %I IN (.,*) DO ECHO %I
 

برای چرخش بین مقدار های تکراری باید از پارامتر /l بعد از دستور for استفاده کنید. فرایند به این صورت است در پرانتز SET باید ابتدا مقدار شروع را مشخص کنید سپس مقدار کاهش یا افزایش را مشخص کنید در آخر مقدار پایانی را مشخص کنید. به مثال زیر توجه کنید:

 
FOR /L %G IN (1,1,10) DO ECHO %G
 

دستور بالا به ترتیب از عدد 1 تا عدد 10 را پشت سر هم با دستور ECHO نمایش میدهد.

 

همچنین میتوانید شمارش را به صورت عکس انجام دهید. به مثال زیر توجه کنید:

 
FOR /L %G IN (10,-1,0) DO ECHO %G
 

استفاده از دستور FOR به همینجا ختم نمیشود و کارهای دیگری از قبیل تجزیه فایلهای متنی هم میتوان انجام داد. ولی تا همینجا برای این فصل کافیست.

 

 

15 نکته تکمیلی از Batch Programming

 

در این فصل میخواهم به صورت کلی به 15 نکته تکمیلی در هنگام ساخت فایل Batch اشاره کنم که شاید کمی کمک کننده باشند.

 
  1. برای ساخت فایل Batch ابتدا یک فایل متنی (New Text Document) بسازید سپس آن را ویرایش کنید و با دستور @Echo off آن را به حالت Interactive یا غیر تعاملی وارد کنید.
  2. از دستور Title برای مشخص نمودن عنوان برنامه که با Batch Programming میسازید استفاده کنید.
  3. برای بهبود خوانایی متن های که با دستور Echo تایپ میکنید، همیشه پس از هر پیام Echo یک بگزارید تا متن شما به درستی برای مخاطب نمایش داده شود.
  4. از دستور Color برای رنگی نمودن متن و زمینه فایل Batch استفاده کنید.
  5. هر برنامه یا دستور که اجرا میشود دارای دو کد بازگشتی میباشد که کد صفر (0) مشخص کننده عملکرد صحیح برنامه میباشد و معمولا کد 1 به بالا به معنای وجود خطا در اجرای برنامه است.
  6. برای بررسی نمودن عملکرد برنامه ها میتوان از Variable یا متغیر %ERRORLEVEL% استفاده نمود.
  7. متغیر ها یا Variable ها به شما کمک میکنند تا دستورات و جمله های بلند را در یک کلمه یا یک حرف خلاصه کنید.
  8. برای ساخت Variable باید از دستور SET استفاده کنید.
  9. در CMD سه نوع استاندارد ورودی و خروجی وجود دارد که STDIN یا Standard Input به آنچه که شما توسط Keyboard وارد میکنید گفته میشود. STDOUT یا Standard Output به خروجی گفته میشود که شما آن را در مانیتور تماشا میکنید و STDERR یا Standard Error به خطاهای نمایش داده شده از مانیتور گفته میشود.
  10. استاندارد STDIN با کد 0 مشخص شده و استاندارد STDOUT با کد 1 و استاندارد STDERR با کد 2 مشخص میشود.
  11. برای اجرای شرطی برنامه ها و دستورات باید از دستور IF استفاده کنید.
  12. از دستور IF میتوان برای بررسی از وجود داشتن فایلها و یا بررسی صحت عملکرد برنامه ها و یا مقایسه دو مقدار استفاده نمود.
  13. با استفاده از دستور SET و دستور IF میتوانی یک منوی کاربردی برای فایل Batch بسازید.
  14. یکی از دستورات کاربردی برای کاهش تایپ مجدد دستورات دستور FOR میباشد.
  15. با دستور FOR میتوانید فایلها و پوشه ها و یا هر دو آنها را بررسی کنید.
 

 

آموزش ساخت IP Scanner با Batch Script

 

تا به امروز ابزار های زیادی جهت بررسی IP های درون یک شبکه درست شده است که حقیقتا بعضی از آنها مثل Advanced IP Scanner بسیار کاربردی و مفید میباشند. اما امروز میخواهیم خودمان یک IP Scanner بسازیم که از سرعت بالایی در بررسی IP های درون یک شبکه برخوردار باشد و تا حدی نیاز مان را نسبت به برنامه های Third Party ویندوز برطرف سازد.

 

نیازمندی های ساخت IP Scanner با Batch Script

 

آنچه که در این آموزش مورد نیاز ما میباشد وجود دستور Ping در ویندوز است که ما میخواهیم با استفاده از این دستور از وجود IP های زنده در شبکه خود با خبر شویم.

 

برای شروع ابتدا باید با استفاده از دستورات echo و title و color و mode و setlocal بخش اصلی برنامه IP Scanner خود را بسازیم تا کاربران مان با یک محیط جذاب روبرو شوند 🙂 . برای مثال:

 
@echo off

title TMLMANAGER IP SCANNER

color 0f

mode con cols=100 lines=25

setlocal enabledelayedexpansion

echo ____________________________________________________________________________________________________

echo.

echo                                 Welcome to The TMLMANAGER IP Scanner

echo.

echo ____________________________________________________________________________________________________

echo.
 

استفاده از دستور Set و ساخت متغیر

 

با استفاده از دستورات بالا فقط ظاهر برنامه IP Scanner ساخته شده است. حال باید با استفاده از دستور Set از کاربر درخواست IP بکنیم و آن IP را در یک متغیر ذخیره کنیم. برای مثلا:

 
set /p IPRANGE=Please enter your IP Address here:
 

استفاده از دستور For و ساخت حلقه

 

پس از دریافت آدرس آی پی از کاربر باید آدرس را با استفاده از دستور for به چهار متغیر مختلف تقسیم کنیم و اکتت آخر آنرا حذف کنیم تا بتوانیم یک Range از آدرسهای آی پی را با آن بررسی کنیم.  برای مثال:

 
for /f "usebackq tokens=1-4 delims=." %%a in ('!IPRANGE!') do (

    set IPADDRESS=%%a.%%b.%%c

)
 

استفاده از دستور for و if برای چرخش و شرطی سازی

 

حال باید یک دستور for به همراه پارامتر /l برای شمارش عدد 1 تا 254 درست کنیم و این دستور for را در دستور for قبلی قرار دهیم تا رنج آدرسهای مشخص شده ما یکی یکی با دستور ping بررسی شوند و پس از آن با استفاده از دستور if صحت عملکرد دستور ping را بررسی کنیم و در نهایت شرطی مشخص کنیم که اگر ما به درستی به آدرس آپی دسترسی داشتیم آن آدرس را در یک فایل متنی برای مان ذخیره کند. برای مثال:

 
for /f "usebackq tokens=1-4 delims=." %%a in ('!IPRANGE!') do (

    set IPADDRESS=%%a.%%b.%%c

    for /l %%g in (1,1,254) do (

        ping -n 2 -w 1 !IPADDRESS!.%%g >nul

        if !errorlevel! equ 0 (

            echo Founded IP Address: !IPADDRESS!.%%g >>FoundedIPAddress.txt

        )

    )

)
 

خب تا اینجا به همین سادگی برنامه IP Scanner ما ساخته شد اما این برنامه ای که درست کردیم سر شار از مشکلات میباشد که باید آنها را برطرف سازیم. مثلا یکی از این مشکلات این است که ما مشخص نکردیم که اگر غیر از IP چیز دیگری وارد شد آن مقدار از کاربر پذیرفته نشود و …


 




مهندس چراغی
بیوگرافی
رفع ایراد سیستم و شبکه های کامپیوتری  ، برقراری امنیت  و نیز فروش تمامی تجهیزات مربوط به آنها
کدهای وبلاگ