دوره‌ های آموزشی نووا
فوریه 28, 2021

علامت ها و کاراکتر ها در بچ اسکریپت

Avatar photo
برنامه نویس MERN Stack
علامت ها و کاراکتر ها در بچ اسکریپت

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

کاراکتر Double Quote

کاراکتر Space در CMD و Batch File به عنوان یک حائل یا جدا کننده دیده میشود به همین خاطر نمیتوان نام های که در بین آنها از کاراکتر Space استفاده شده را به صورت مستقیم استفاده نمود. مثلا شما نمیتوانید به صورت مستقیم از آدرس زیر در فایل Batch یا CMD استفاده کنید:

C:\Program Files\Internet Explorer\iexplore.exe

چرا که در این آدرس هم در نام Program Files از کاراکتر Space استفاده شده هم در نام Internet Explorer برای اینکه به CMD بگوید کاراکترهای Space بین نام Program Files و Internet Explorer متعلق به نام آنها میباشد و این کاراکتر ها جدا کنند نیستند. باید این نام ها را در بین دو علامت Double Quote قرار دهید. برای مثال:

C:\"Program Files"\"Internet Explorer"\iexplore.exe

البته در آدرسها نیاز نیست برای هر نام که کاراکتر Space در آن وجود داشت آنرا بین دو علامت Double Quote قرار دهید بلکه کافیست کل آدرس را بین دو علامت Double Quote بگذارید. برای مثال:

C:\"Program Files\Internet Explorer\iexplore.exe"

کاراکتر Carets

اضافه نمودن کاراکتر Carets قبل از یک علامت باعث میشود آن علامت به عنوان یک متن عادی در نظر گرفته شود که به این عمل Escape میگویند. مثلا زمانیکه میخواهید کاراکتر & را در دستور ECHO به نمایش بگذارید باید قبل از این کاراکتر از کاراکتر Carets استفاده کنید. برای مثال:

ECHO It’s a normal Text Message ^& Use carets Character ^^

شما میتوانید قبل از هر یک از کاراکتر های زیر از کاراکتر Carets استفاده کنید تا آن کاراکتر را به عنوان یک متن عادی نشان دهید:

^<      ^>      ^&      ^|      ^/       ^^    ^^!

همچنین میتوانید یک دستور را با استفاده از کاراکتر Carets در چند خط متوالی بنویسید. به مثال زیر توجه کنید:

ECHO Hello It’s a Text ^
 Message You See All of ^
 This Message in One Line 

در دستور FINDSTR نمیتوان از کاراکتر Caret به عنوان عمل Escape استفاده نمود پس باید از علامت Back Slash به عنوان کاراکتر Escape استفاده کنید. برای مثال:

\\     \[       \]       \”       \.        \*        \?

همچنین کاراکتر Escape برای علامت % خود علامت % میباشد و کاراکتر Escape در دستور FIND برای علامت ” خود این علامت ” میباشد.

نکته: توجه کنید زمانیکه از دستور FOR استفاده میکنید در پرانتز SET باید قبل از هر یک از علامت های Piping یا Redirection یا & از علامت Caret استفاده کنید. در غیر این صورت دستور شما با خطا مواجه میشود. به مثال زیر توجه کنید:

FOR /F "TOKENS=2 DELIMS=:" %A IN ('GETMAC /FO LIST ^| FINDSTR /I "PHYSICAL ADDRESS"') DO @ECHO %A

در صورتی که از دستور SETLOCAL به همراه پارامتر EnableDelayedExpansion استفاده کرده باشید نمیتوانید در جلوی دستور Echo علامت تعجب را به صورت متن عادی نمایش دهید چرا که این علامت در واقع برای نمایش Variable ها استفاده میشود برای نمایش این علامت به صورت یک متن عادی باید از دو کاراکتر Caret پشت سر هم قبل از علامت ! استفاده کنید. برای مثال:

@ECHO OFF
 SETLOCAL ENABLEDELAYEDEXPANSION
 TITLE ENABLE DELAYED EXPANSION
 ECHO YOU MUST USE TWO CARET BEFORE EXCLUMATION MARK^^! 

علامت ها و کاراکتر ها در بچ اسکریپت: علامت پرانتز

شما میتوانید با استفاده از پرانتز دستورات Batch File را چند در سطر مختلف تایپ کنید سپس کلیه آن دستورات با یکدیگر اجرا شوند. به مثال زیر توجه کنید:

IF EXIST FILENAME (
 ECHO YOUR FILES EXIST
 ECHO THEN YOU CAN USE IT
 ) ELSE (
 ECHO YOUR FILE NOT EXIST
 ECHO THEN YOU CANT US IT
 ) 

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

IF EXIST FILENAME (
 ECHO YOUR FILENAME EXIST
 ) ELSE (
 ECHO YOUR FILENAME (NOT) EXIST)
 برای رفع این مشکل باید از کاراکتر Caret در کنار کاراکتر پرانتز استفاده کنید. برای مثال:
 IF EXIST FILENAME (
 ECHO YOUR FILENAME EXIST
 ) ELSE (
 ECHO YOUR FILENAME (NOT^) EXIST) 

نکته: برای استفاده از متغیر ها در بین علامت پرانتز باز و پرانتز بسته () باید از ویژگی EnableDelayedExpansion استفاده کنید. چرا که تا یک پرانتز به طور کامل بسته نشود دستورات درون آن اجرا نمیشوند. برای مثال:

@ECHO OFF
 (SET ADDRESS=HTTP://TML-MANAGER.IR
 ECHO %ADDRESS%)
 به مثال بعدی توجه کنید:
 @ECHO OFF
 SETLOCAL ENABLEDELAYEDEXPANSION
 (SET ADDRESS=HTTP://TML-MANAGER.IR
 ECHO !ADDRESS!) 

علامت Pipe

همانطور که در فصل پنجم هم گفتم از علامت Pipe برای عمل Piping در CMD و Batch File استفاده میشود. مثلا برای ارسال خروجی دستور TASKLIST به دستور FINDSTR برای نمایش اطلاعات مربوط به برنامه EXPLORER.EXE دستور به شکل زیر میشود:

TASKLIST /FO CSV | FINDSTR /I "EXPLORER"

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

PING TML-MANAGER.IR || ECHO FAILD ACCESS TO WEBSITE

علامت Redirection

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

DIR /A /S >%HOMEPATH%\DESKTOP\LISTOFFILE.TXT

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

SORT <%HOMEPATH%\DESKTOP\LISTOFFILE.TXT

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

کاراکتر Colon

کاراکتر Colon به شما اجازه میدهد تا فایل Batch خود را به بخش های مختلف تقسیم کنید. اما یکی دیگر از کارهای که میتوانید با این کاراکتر انجام دهید Comment گذاری یا نوشتن توضیحات در فایل Batch میباشد. دقیقا همانند دستور Rem برای مثال:

@ECHO OFF
 TITLE Use REM Command Or Double Colon
 :: Title Command Add a Title to Batch File
 REM There is no different Between Double Colon and Rem Command
 Echo Welcome to the Keys 

کاراکتر Star

کاراکتر ستاره (*) در CMD و Batch Script نماینده کلیه فایلهای موجود در پوشه مشخص شده میباشد. مثلا اگر بخواهید در CMD یا Batch Script کلیه فایلهای JPG را با دستور DIR مشاهده کنید کافیست قبل از پسوند JPG از یک علامت ستاره استفاده کنید برای مثال:

DIR /A /S *.JPG

لطفا سوالات و پیشنهادات خود را درباره مقاله علامت ها و کاراکتر ها در بچ اسکریپت بنویسید. برای یادگیری خط فرمان ویندوز به صفحه آموزش cmd سر بزنید و برای یادگیری batch script به صفحه آموزش بچ اسکریپت سر بزنید.

9 پاسخ به “علامت ها و کاراکتر ها در بچ اسکریپت”

  1. Avatar photo Alireza گفت:

    سلام
    من دنبال کاربرد علامت تعجب در CMD می گردم نمیدونین چیه؟

    • سلام
      چه انتظاری از علامت تعجب دارید؟ یکی از کاربردهاش این: زمانیکه در بچ اسکریپت از دستور setlocal enabledelayedexpansion استفاده میکنند با علامت تعجب میشه از یک متغیر قبل از تجزیه شدنش استفاده کرد.

  2. Avatar photo Sadegh گفت:

    درود استاد … دنبال یه عملی هستم که بتونم کدش رو با بچ بنویسم اگه مقدوره یه محیطی ایدی چیزی لطف کنید تصویری عرض کنم . موقع سرچ تو اکسپلورر دیدین همه فایلها یعنی هر فایلی که دارای اسم بعنوان مثال future باشه رو پیدا میکنه ؟( مثل future bass) این حرکتو تو بچ چطور میشه زد ؟ من میخوام از بین 17 گیگ پریست اهنگسازی هر پریستی که توش اسم future داره مثل future bass رو پاک کنم .این عمل رو چطوری میتونم انجام بدم ؟

    • سلام
      نیاز به برنامه خاصی ندارید.
      اگر میخواهید براساس اسم فایلهاتون رو حذف کنید میتونید از دستور del به سبک زیر استفاده کنید:

      del /s /q *future*.extension
      

      در دستور بالا گفته شده هر فایلی که در اون کلمه future داشت رو بدون پرسش حذف کنه، فایلهای که پسوندشون .extension هست و شما باید بجای این پسوند فایل Preset خودتون رو مشخص کنید. این دستور رو در root دایرکتوری مسیری که فایلهای پریست در اونجا نگه داری میشن وارد کنید.

  3. Avatar photo بهنام گفت:

    فصل 9 رو اشتباه فصل 7 گذاشتید

  4. Avatar photo توکلی گفت:

    سلام
    من تعدادی فایل دارم که می‌خوام به نام هر کدوم یک فولدر ساخته بشه و فایل بره داخلش (تمام فایلها با نام مشابه با هم در یک پوشه برن) و فقط ۳ کاراکتر ابتدای تامسون در نام فولدرشون پاک بشه.
    امکانش هست کمکم کنید.
    ممنون

  5. Avatar photo آرش ترکیان گفت:

    سلام و خسته نباشید
    چجوری میشه یک فایل را به صورت غیر قابل رویت باز کرد و اگر مثلا taskkill وجود داشت اون فایل رو پاک کنه؟

    • سلام، ممنون سلامت باشید
      معمولا بعضی از برنامه ها قابلیت اجرا به صورت silent یا quiet دارند که با یک پارامتر مشخص باید فراخوانی بشن، این هم برای هر برنامه میتونه متفاوت باشه، میتونه این پارامتر ها باشند (quiet – silent) یا باید از علامت سوال برای بررسی پارامتر هاش استفاده کنید.
      باید بر اساس کد ایونت برنامه بسته بشه

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

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