آموزش ساخت فایل Batch

آموزش ساخت فایل Batch دستور IF

همانند زبانهای برنامه نویسی، 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 را درک کنید. در صورت داشتن هر گونه سوال یا انتقاد تی ام ال منیجر را از محبت خود محروم نکنید.


برای دریافت نسخه PDF مقاله های سایت ابتدا در سایت ثبت نام کنید تا بتوانید به کلیه مقالات به صورت کاملا رایگان دسترسی پیدا کنید. ورود به سایت | ثبت نام در سایت


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

فصل اول: مبانی پایه Batch Programming

فصل دوم: کدهای برگشتی یا فایل Batch یا Return Code

فصل سوم: ورودی ها و خروجی های STDIN , STDOUT , STDERR

فصل چهارم: معرفی و ساخت Variable ها با دستور SET

فصل پنجم: اجرای شرطی برنامه ها با دستور IF

فصل ششم: ساخت منو در فایل Batch (با استفاده از دستور IF و SET)

فصل هفتم: دستور FOR برای ساخت حلقه

فصل هشتم: نکات تکمیلی در ساخت فایل Batch (بررسی کلی)


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

محمد برغمدی

امام علی علیه السلام: با مردم آنگونه معاشرت كنيد، كه اگر مرديد بر شما اشك ريزند، و اگر زنده مانديد، با اشتياق سوي شما آيند.

25 دیدگاه در “آموزش ساخت فایل Batch

  • مهر 21, 1395 در10:58
    پیوندیکتا

    خیلی ممنون کامل بود بطوریکه نیازم رفع شد در این زمینه

    پاسخ
  • آذر 18, 1395 در16:33
    پیوندیکتا

    سلام.میخام برنامه ای بنویسم که چک کنه اگر macid برنامه برابر مک ایدی سیستم بود ی فایل اکسل اماده رو برامون باز کنه در غیر اینصورت از برنامه خارج بشه.میتونین کمک کنید؟

    پاسخ
    • آذر 18, 1395 در19:40
      پیوندیکتا

      سلام
      اگر منظورتون رو درست متوجه شده باشم شما همچین چیزی میخواهید:
      IF %MACADDRESS%==11:11:11:11:11:11 START EXCELFILE

      پاسخ
  • آذر 22, 1395 در14:38
    پیوندیکتا

    سلام ممنون که پاسخ دادین.من به جای 1 ها مک ایدی سیستمم رو وارد کردم و به جای EXCELFILE ادرس فایل اکسل به همراه نام و پسوند ولی موقع اجرا فقط از برنامه خارج میشه؟؟!!!
    IF %MACADDRESS%==MACID SYSTEMAM START d:\bank11.xlsx
    میشه بگین ایراد برنامه ام کجاست؟ممنونم

    پاسخ
    • آذر 22, 1395 در16:18
      پیوندیکتا

      سلام خواهش میکنم
      کلا چند تا اشتباه داشتید:
      1- کلمه SYSTEMAM چیه؟ باید از DO برای اجرای دستور مورد نظر تون استفاده کنید.
      2- قبل از این دستور باید از دستور for برای پیدا کردن MAC Address های سیستم تون استفاده کنید.

      @ECHO OFF
      TITLE COMPARE MAC ADDRESS
      COLOR 0A
      FOR /F “USEBACKQ TOKENS=2 DELIMS=:” %%A IN (`IPCONFIG /ALL ^| FIND /I “PHYSICAL ADDRESS”`) DO (
      @ECHO %%A >>MACLIST
      )
      TYPE MACLIST | FIND “11-11-11-11-11-11” && START CALC
      DEL MACLIST >NUL

      پاسخ
      • آذر 22, 1395 در16:49
        پیوندیکتا

        MACID SYSTEMAM منظورم اینه که مک ایدی سیستم خودم رو نوشتم.

        پاسخ
      • آذر 22, 1395 در16:52
        پیوندیکتا

        همین برنامه رو کپی پبست کردم و ادرس مک ایدی سیستم خودم رو نوشتم ولی بازم فقط از برنامه خارج میشه!!!!

        پاسخ
        • آذر 22, 1395 در18:04
          پیوندیکتا

          اگر متن برنامه رو از سایت کپی پیست کنید تو فایل text برنامه اجرا نمیشه چون علامت های Quotation Mark رو صحیح کپی نمیکه پس باید اول علامت های Quotation Mark (“”) رو حذف کنید و به صورت دستی تایپشون (“”) کنید.

          پاسخ
    • آذر 22, 1395 در16:21
      پیوندیکتا

      کلا میتونید از اسکریپت بالا استفاده کنید فقط باید بجای مک آدرس 11-11-11-11-11-11 مک آدرس مورد نظر خودتون رو جایگزین کنید.

      پاسخ
      • آذر 22, 1395 در16:48
        پیوندیکتا

        برنامه رو میشه توضیح بدین؟ MACID برنامه برابر MACID سیستم بود باید ی فایل اکسل رو باز کنه اونو کجا تعریف کنم؟؟؟

        پاسخ
        • آذر 22, 1395 در17:36
          پیوندیکتا

          بجای CALC که برنامه ماشین حساب رو باز میکنه ادرس فایل اکسل رو میدم ولی بازم اجرا نمیشه.حتی خود CALC هم اجرا نمیشه.”:(

          پاسخ
          • آذر 22, 1395 در17:55
            پیوندیکتا

            برنامه ای که براتون ارسال کردم اول همه MAC ADDRESS های سیستم رو بررسی میکنه و از اونها یک فهرست با نام MACLIST تهیه میکنه بعد اگه MAC ADDRESS شما را از فهرست پیدا کرد با دستور START برنامه مورد نظر شما را اجرا میکنه
            فایل متنی برنامه رو با فرمت .TXT براتون ارسال مینکم خودتون بررسی کنید باید بخش MAC ADDRESS و آدرس برنامه EXCEL رو عوض کنید. اگر باز هم نتونستید انجام بدید مسیر نصب برنامه EXCEL رو به همراه MAC ADDRESS مورد نظرتون رو بگید تا برنامه رو شخصی سازی کنم.
            لینک برنامه: http://files.tml-manager.ir/dl/MAC.zip

  • آذر 22, 1395 در18:13
    پیوندیکتا

    بی نهایت از لطفتون ممنونم.فقط ی سوال دیگه با اجازتون:
    برنامه اجرا شد صفحه cmd مک ایدی رو نشون میده و باز میمونه همزمان فایل اکسل رو هم باز میکنه.چجوری میتونم ویرایشش کنم که اگه فایل اکسل رو باز کرد دیگه صفحه cmd بسته بشه.ممنونم

    پاسخ
  • آذر 23, 1395 در09:46
    پیوندیکتا

    با سلام
    دوتا سوال دیگه برام مطرح شد که به اجازه تون میپرسم:
    1- دستور pause رو حذف کردم ولی وقتی فایل اکسل باز میشه صفحه cmd همچنان مک ادرس رو نشون میده و باز میمونه.دستوری که صفحه cmd همزمان با باز شدن اکسل بسته بشه چیه؟با دستور IF میشه؟ اگه میشه چجوری؟
    2- چجوری میتونه به جای یک مک ایدی چندین مک ایدی رو چک کنه؟ یعنی روی چندین سیستم قابل اجرا باشه.

    پاسخ
    • آذر 23, 1395 در10:12
      پیوندیکتا

      سلام
      دستور CALL رو با دستور START عوض کن تا بعد از اجرای فایل EXCEL برنامه به کار خودش ادامه بده و متوقف نشه
      برای اینکه بتونید چند تا سیستم رو اضافه کنید باید خط مربوط به دستور TYPE MACLIST رو به صورت کامل چند بار کپی پیست کنید و MAC ADDRESS های مرود نظرتون رو جایگزین کنید.
      در ضمن به زودی کتاب آموزش BATCH PROGRAMMING رو هم روی سایت قرار میدم.

      پاسخ
      • آذر 23, 1395 در10:29
        پیوندیکتا

        عالی بود ممنون
        منتظر کتاب اموزشیتون هستیم.
        موفق باشین.

        پاسخ
  • آذر 23, 1395 در16:42
    پیوندیکتا

    سلام.من خیلی معذرت میخام که انقد سوال میکنم ولی
    من ی فایل اکسل دارم میخام
    1- کاربرانم دسترسی مستقیم بهش نداشته باشن.
    2-روی هر سیستم اجرا نشه فقط رو سیستم هایی که مک ایدیشون رو تعریف میکنم اجرا بشه
    3-یک برنامه ی دیگه بره اون رو باز کنه
    با برنامه ای که قبلا با کمکتون نوشتیم نمیشه.راه حلی برام دارین؟
    ممنون

    پاسخ
  • آذر 23, 1395 در19:37
    پیوندیکتا

    سلام خواهش میکنم عیبی نداره
    پس در کل یک برنامه ای لازم دارید که فایل excel شما رو طبق MAC Address های که براش تعریف کردید فراخوانی کنه درسته؟
    بهترین حالت اینکه این برنامه رو با C# بنویسید ولی نیاز داره شما زبان C# رو یاد داشته باشید.
    با همین Batch Programming هم میتونید اینکار رو انجام بدید فقط باید به درستی قواعدش رو رعایت کنید.
    مشکل برنامه ای که براتون ارسال کردم چی بود؟ با چه خطایی مواجه میشید یا چطور برنامه رو اجرا میکنید؟

    پاسخ
    • آذر 24, 1395 در08:52
      پیوندیکتا

      سلام.وقت بخیر
      درسته برنامه ای هم ک الان با کمک شما نوشتیم همین کار رو میکنه فقط مشکل اینجاست که فایل اکسل رو باید همراه برنامه به کاربران ارائه بدم تا برنامه اجرا بشه.
      با سی شارپ هم بلدم برنامه اشو ولی فایل نباید exe باشه.

      پاسخ
      • آذر 24, 1395 در15:50
        پیوندیکتا

        سلام
        فکر نمیکنم بتونی بدون استفاده از فایل EXE کاری از پیش ببری
        تو بهترین حالت باید با InstallShield یک فایل نصبی درست کنی که توش فایل Excel رو به صورتی مخفی سیستمی دربیاره و در یکی از پوشه های اصلی ویندوز کپی کنه و از فایل Bat یک Shortcut بزاری روی Desktop و از فایل bat فایل Excel رو فراخوانی کنی

        پاسخ
    • آذر 24, 1395 در09:01
      پیوندیکتا

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

      پاسخ

پاسخ دهید

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