نمایش نتایج: از شماره 1 تا 10 , از مجموع 173

موضوع: دستورات فایلهای Batch

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #11
    مدیر سایت
    دوستتان دارم
    تاریخ عضویت
    Jan 2012
    محل سکونت
    تهران
    نوشته ها
    2,286
    تشکر تشکر کرده 
    4,798
    تشکر تشکر شده 
    13,155
    تشکر شده در
    2,296 پست
    قدرت امتیاز دهی
    45308
    Array

    پیش فرض پاسخ : دستورات فایلهای Batch

    نمیدانم تا کنون دقت کرده اید یا نه ، در همه ویندوز ها داخل پوشه Program Files پوشه ای بنام Common Files وجود
    دارد.
    حالا فرض کنیم که شما فایلی بنام xxx.exe دارید و میخواهید این فایل توسط یک فایل Batch ، به داخل همین پوشه
    کپی شود. با روش هائیکه تاکنون یاد گرفته ایم ، مسلما" دستور زیر را بکار می برید:

    Copy xxx.exe C:\Program Files\Common Files

    حالا اگر دستور بالا را اجرا کنید فایل کپی نخواهد شد. دلیلش دو مطلب است:
    1. فایل Batch نامی را که بین حروفش فاصله خالی باشد نمی شناسد.
    2. فایل Batch موقع کار با نام هائیکه بیش از 8 کاراکتر داشته باشد مشکل دارد.

    برای درک درست مطلب بجای دستور بالا دستورات زیر را اجرا کنید:

    کد:
    @ECHO OFF
    Copy xxx.exe E:\Program Files\Common Files
    pause
    حال اگر فایل Batch را اجرا کنید خواهید دید که پیغام میدهد که . The syntax of the command is incorrect

    می بینید که گفته دستور غلط است.ولی دستور غلط نیست بلکه همانگونه که گفتم فایل Batch نامی را که بین حروفش
    فاصله خالی باشد نمی شناسد. و در مثال بالا بین Program و Files ( و همچنین مابین Common و Files ) فاصله خالی
    وجود دارد که فایل Batch قادر به شناسائی آن ها نیست.

    روش کار این است که در موارد اینگونه ، فرضا" در مثال بالا ، آدرس مورد استفاده را مابین علایم " " محصور کنیم.
    یعنی برای مثال بالا باید دستور را بصورت زیر بنویسیم تا اجرا شود:

    کد:
    Copy xxx.exe "C:\Program Files\Common Files"

    Environment Variables
    =============

    در بحث هایمان بویژه موقع کار با دستور Set با چند مورد استفاده از متغیر ها در برنامه نویسی با Batch آشنا شدیم. و در
    اینجا بیشتر در اینمورد صحبت می کنیم.

    متغیر ها دو نوع هستند یک نوع آن هائی هستند که خودمان تعیین میکنیم مثل مثال هائیکه موقع کار با دستور Set
    دیدیم.
    ولی نوع دیگری از متغیر ها هستند که در سیستم وجود دارند و فایل Batch آن ها را می شناسد و نیازی به معرفی
    آن ها نیست. اینگونه متغیر ها را Environment Variables مینامند.برای درک بهتر این نوع متغیر ها به مثال زیر توجه
    کنید.
    دستور استفاده شده در مثال بالا روش درستی نیست. همانطور که قبلا" گفتم ، فایل Batch تعدادی متغیر سیستمی
    را می شناسد . برای نمونه از نظر فایل Batch عبارت %COMMONPROGRAMFILES% مشابه آدرس گفته شده در بالا
    یعنی ....\Program Files\Common Files می باشد
    بصورت دیگر ما میتوانیم عوض استفاده از دستور طولانی بالا از دستور ساده زیر استفاده کنیم:

    کد:
    Copy xxx.exe "%COMMONPROGRAMFILES%"
    متغیر استفاده شده در بالا یکی از متغیر های Environment Variables است.
    یادگیری این متغیر ها در خیلی از موارد لازم است .اگر به مثال زیر دقت کنید مهم بودن یادگیری آن ها را متوجه خواهید
    شد.

    مثال:
    فرضا" میخواهیم فایل xxx.exe را به داخل پوشه C:\Documents and Settings\{username}\Application Data
    (در ویندوز XP) و یا معادلش پوشه C:\Users\{username}\AppData\Roaming در ویندوز 7 کپی کنیم.
    در این جا دو مسئله مهم است که بدانیم:

    1. لازم نیست که آدرس طویل بالا را استفاده کنیم . هم در ویندوز XP و هم در ویندوز 7 میتوانیم بجای آدرس های طویل
    بالا از متغیری بنام %APPDATA% استفاده کنیم. یعنی با اجرای دستور زیر هم در ویندوز XP و هم در ویندوز 7 کار
    مورد نظر ما انجام خواهد شد:

    کد:
    Copy xxx.exe "%APPDATA%"
    2. اگر از متغیر نوع Environment Variables استفاده نکنیم ، بعضی مواقع حتی اگر فایل یا فایل ها به محل مورد نظر
    کپی شوند ، باز هم برنامه ما کار نخواهد کرد . به مثال زیر توجه کنید:

    فرضا" لازم است که برای اجرای یک برنامه ویژه ،فایل xxx.exe به داخل پوشه Windows کپی شود. برای اینکار در حالت
    عادی ( بدون استفاده از متغیر نوع Environment Variables ) مسلما" دستور زیر را استفاده میکنیم:

    Copy xxx.exe C:\windows

    بله این فایل به پوشه C:\windows کپی خواهد شد.ولی مسئله مهمی این جا وجود دارد که کاربرد برنامه شما را
    محدود میکند.چون این برنامه فقط برای کسانی درست کار خواهد کرد که ویندوزشان در درایو C نصب شده باشد.

    کسان دیگری که ویندوزشان در درایو C نصب نیست (مثل بنده که ویندوزم در درایو E نصب هست ) ، نخواهند توانست
    از برنامه مورد نظر استفاده کنند.
    بنابر این با این روش فقط یک عده محدودی قادر به استفاده هستند یعنی برنامه شما نقص دارد.

    پس چکار باید کرد؟
    اینجاست که استفاده از متغیر های نوع Environment به درد میخورند. برای این مثال برای آدرس پوشه ویندوز یک
    متغیر نوع Environment بنام %SystemRoot% و جود دارد که برای مثالمان میتوانیم بصورت زیر استفاده کنیم:

    کد:
    Copy xxx.exe %SYSTEMROOT%
    خوبی این دستور این است که فایل Batch موقع اجرا وقتی به این متغیر میرسد دیگر مثل دستور بالا عمل نمیکند بلکه
    اول نگاه میکند تا ببیند ویندوزی که استفاده میکنید در کدام درایو است و سپس فایل xxx.exe را به داخل پوشه ویندوزی
    که در حال استفاده از آن هستید کپی میکند ، فرضا" در سیستم من آن را به آدرس E:\Windows کپی میکند.

    اگر عمری باشد در جلسه بعد انواع متغیر های اینگونه را هم برای ویندوز XP و هم برای ویندوز 7 ارایه خواهم کرد.

    [SIGPIC][/SIGPIC]

  2. 5 کاربر مقابل از Magsoud عزیز به خاطر این پست مفید تشکر کرده اند.


علاقه مندی ها (بوک مارک ها)

علاقه مندی ها (بوک مارک ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

http://www.worldup.ir/