تبلیغات

آموزش دستورات شرطی در بچ اسکریپت

اگر نمی‌دانید دستورات شرطی در برنامه‌نویسی چه مفهومی دارند، ابتدا لینک زیر را مطالعه کنید:

مفهوم شرط در برنامه‌نویسی

بچ اسکریپت نیز شامل دستور شرطی if/else می‌باشد. در ادامه، به معرفی انواع حالت‌های مختلف آن می‌پردازیم.

شرط ساده

مواقعی نیاز داریم تا بررسی کنیم که اگر شرط خاصی حاکم بود، کد خاصی اجرا شود.

سینتکس و قاعده‌ی کلی:

IF condition do_something
IF condition (do_something)

مثال اول – کد زیر را در نظر بگیرید:

@ECHO off 
SET /A a=1
SET /A b=4
SET /A c=%a% + %b%
IF %c%==5 ECHO The value of variable c is 5
IF %c%==10 ECHO The value of variable c is 10
PAUSE

دو متغیر a و b که شامل یک عدد می‌باشند؛ سپس این دو را جمع کرده و درون متغیر c قرار می‌دهیم. آنگاه در ادامه با دستور شرطی یک بار بررسی می‌کنیم که اگر مقدار c برابر با 5 بود، پیام متناسب با آن نمایش داده شود؛ و سپس با دستور شرطی دیگری بررسی می‌کنیم که اگر مقدار c برابر با 10 بود، پیام دیگری نمایش داده شود. پس دو شرط بررسی شده و در صورت صحیح بودنشان، پیامشان چاپ می‌شود؛ که در مورد مثال بالا، انتظار داریم تا شرط اولی اجرا شده و دومی اجرا نشود.


مثال دوم – کد زیر را در نظر بگیرید:

@ECHO off
SET name1=Hadi
SET name2=Reza
IF %name1%==Hadi echo name1 is Hadi
IF %name2%==Ali echo name2 is Ali
PAUSE

این کد نیز همانند مورد قبل است؛ با این تفاوت که به‌جای عدد، ما از رشته استفاده کرده‌ایم.

شرط با ELSE

این حالت برای زمانیست که بخواهیم بگوییم اگر فلان شرط حاکم بود، فلان کد اجرا شود؛ و در غیر این‌صورت، کد دیگری اجرا شود.

سینتکس و قاعده‌ی کلی:

IF condition (do_something) ELSE (do_something_else)

مثال – کد زیر را در نظر بگیرید:

@ECHO off
SET url=google.com
IF %url%==fullkade.com (ECHO The url is valid) ELSE (ECHO The url is invalid)
PAUSE

در اینجا گفته شده است که اگر مقدار متغیر url برابر با fullkade.com بود، پیام متناسب با آن چاپ شده و بنویسد که آدرس معتبر است؛ در غیر اینصورت، بنویسد آدرس معتبر نیست! این در غیر اینصورت همان ELSE می‌باشد. اگر شرط درست نباشد، بخش ELSE اجرا می‌شود؛ و در واقع این بخش برای هر url ای که مقدار آن fullkade.com نباشد اجرا خواهد شد.

شرط با ELSE IF

این نیز همانند مورد قبل است؛ برای زمانیست که اگر شرطی حاکم بود، کد خاصی اجرا شده و در غیراینصورت، اگر شرط دیگری حاکم بود، کد دیگری اجرا شود.

سینتکس و قاعده‌ی کلی:

IF (condition) (do_something) ELSE IF (do_something_else)

مثال – کد زیر را در نظر بگیرید:

@ECHO off 
SET /A a=1
SET /A b=4
SET /A c=%a% + %b%
IF %c%==5 (ECHO "The value of variable c is 5") ELSE IF %c%==10 (ECHO "The value of variable c is 10")
PAUSE

این کد همان مثال اول است. با این تفاوت که در اینجا بعد از شرط اول، به‌جای ELSE از ELSE IF استفاده شده است. این مثال می‌گوید که اگر مقدار c برابر با 5 بود، پیام متناسب با آن چاپ شده و در غیر این صورت اگر برابر با 10 بود، پیام متناسب با آن چاپ شود. تفاوت این کد با مثال اول در این است که اگر شرط اول درست بود، شرط دوم دیگر بررسی نخواهد شد؛ ولی در مثال اول، هر دو شرط جدای از هم بوده و هردو نیز بررسی می‌شوند.

این کد را می‌توان به شکل زیر نیز نوشت:

@ECHO off 
SET /A a=1
SET /A b=4
SET /A c=%a% + %b%
IF %c%==5 (ECHO "The value of variable c is 5")
ELSE IF %c%==10 (ECHO "The value of variable c is 10")
PAUSE

در اینجا فقط ELSE IF را به خط بعدی منتقل کردیم تا کد خواناتر شود.

شرط IF DEFINED

گاهی اوقات نیاز می‌شود که بررسی کنیم آیا یک متغیر تعریف شده است یا خیر.

سینتکس و قاعده‌ی کلی:

if defined somevariable somecommand

مثال – کد زیر را در نظر بگیرید:

@ECHO off 
SET name1=Hadi 
IF DEFINED name1 ECHO "Variable name1 is defined"
if DEFINED name2 (ECHO "Variable name2 is defined") ELSE (ECHO "Variable name2 is not defined")
PAUSE

در اینجا با استفاده از دستور IF DEFINED، بررسی شده است که آیا متغیر name1 و name2 چاپ شده‌اند یا خیر. همچنین برای متغیر name2، از ELSE نیز استفاده شده است.

شرط IF EXIST

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

سینتکس و قاعده‌ی کلی:

If exist somefile.ext do_something

مثال – کد زیر را در نظر بگیرید:

@ECHO off 
IF EXIST C:\FuLLKade.txt ECHO "The FuLLKade.txt file exists" 
IF EXIST C:\Google.txt (ECHO "The Google.txt file exists") ELSE (ECHO "The Google.txt file does not exist")
PAUSE

نیازی به توضیح نیست. دو مسیر فایل مخلتف را بررسی کرده و شرطی را برای آن‌ها نوشته‌ایم. فرض کنید فایل FuLLKade.txt وجود دارد؛ بنابراین پیام چاپ می‌شود؛ ولی فایل Google.txt وجود ندارد، پس پیام اول چاپ نشده و بخش ELSE اجرا می‌شود.

دستورات شرطی تو در تو

گاهی نیاز است تا برای مثال بگوییم، اگر فلان شرط صحیح بود، کدی اجرا شده و سپس اگر شرط دیگری صحیح بود، کد دیگری اجرا شود. منظور این است که در بدنه‌ی شرط که در صورت صحت آن شرط اجرا می‌شود، شرط دیگری را نیز بنویسیم.

سینتکس و قاعده‌ی کلی:

if(condition1) if (condition2) do_something

مثال – کد زیر را در نظر بگیرید:

@ECHO off
SET /A a = 5
SET /A b = 10
IF %a%==5 IF %b%==10 ECHO "Hi"
PAUSE

بررسی شده است که اگر مقدار متغیر a برابر با 5 باشد، کدی اجرا شود؛ که آن کد نیز می‌گوید اگر مقدار متغیر b برابر با 10 بود، پیام Hi چاپ شود. البته شاید اشخاصی که با زبان‌های برنامه‌نویسی دیگر کار کرده‌اند، این مورد را با نوشتن چند شرط برای یک IF اشتباه بگیرند؛ نوشتن چند شرط برای یک IF در بچ اسکریپت وجود ندارد؛ ولی می‌توان از روش بالا برای پیاده‌سازی آن استفاده کرد. در ادامه این مورد توضیح داده شده است.

پرانتزها در شرط

کد زیر را در نظر بگیرید:

if %score% == 20 (
    if %age% == 12 (
        set class=child
    )
)

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

آیا فقط می‌توان از == استفاده کرد؟!

خیر! علامت == برای بررسی مساوی و برابر بودن دو مورد با یکدیگر است؛ اما از حالت‌های دیگری نیز می‌توان استفاده کرد:

  • EQU برای بررسی مساوی بودن همانند ==
  • NEQ برای برسی نامسوای بودن
  • LSS برای بررسی کوچک بودن از متغیر سمت راست
  • LEQ برای بررسی کوچک‌تر یا مساوی بودن با متغیر سمت راست
  • GTR برای بررسی بزرگتر بودن از متغیر سمت راست
  • GEQ برای بررسی بزرگتر یا مساوبی بودن با متغیر سمت راست

مثال:

@ECHO off
SET /A a=20
IF %a% NEQ 5 ECHO Hi
PAUSE

اگر مقدار a برابر 5 نبود، پیام Hi چاپ می‌شود.

آیا می‌توان چند شرط نوشت؟!

در بچ اسکریپت نمی‌توان چند شرط را برای یک IF مشخص کرد. برای مثال می‌خواهیم بگوییم که اگر شرط فلان و بهمان هردو درست بودند، کد خاصی اجرا شود. این مورد را تنها می‌توان با نوشتن دستورات شرطی تو در تو پیاده‌سازی نمود.

درباره نویسنده

هادی اکبرزاده

[ مدیر فول کده ]

یه کلاسِ تعریف نشده ... فقط برای ارتباط کاری تلگرام پیام بدید ...

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده بدون دیدگاه

توضیحات پیشنهادی نظرات اشتراک