صفحه 5 از 14 نخستنخست 123456789 ... آخرینآخرین
نمایش نتایج: از شماره 41 تا 50 , از مجموع 135

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

  1. #41
    مدیر انجمن کامپیوتر
    همديگر را دوست داشته باشيم و بهم احترام بگذاريم
    تاریخ عضویت
    Mar 2012
    محل سکونت
    زیر سایه شما
    نوشته ها
    794
    سپاس
    3,447
    سپاس گذاری شده :3,451 بار در 790 پست
    حالت من : Ghamgin
    قدرت امتیاز دهی
    13187
    Array

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

    سلام

    ادواردوی عزیز:

    1. در پست شماره 8 عرض کردم:

    __ یک فایل Batch باید دارای پسوند bat باشد ولی اگر در ویندوز بجای پسوند bat از پسوند cmd استفاده کنید ، فایل
    Batch بهتر و سریعتر کار خواهد کرد.




    منظورم همينه که چرا با توجه به سرعت بالا در خوندن واجراي cmd فرمت bat هم در ويندوز وجود داره؟! آيا وجودش ضروريه يا نيازي هست؟



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

    کد:
    for %A in (1 2 3 4 5 6 7 8 9 10 ) do echo %A

    عکس ذيل:


    [Only registered and activated users can see links. ]


    راه دیگر این است که فایل Batch (مثلا" xx.cmd ) را در روت درایو فرضا" D قرار داده و سپس در خط فرمان ویندوز دستور زیر را تایپ
    کرده و کلید Enter را بزنی:

    D:\xx.cmd

    نتیجه بشکل زیر خواهد بود:

    [Only registered and activated users can see links. ]

    اينم عکسش:


    [Only registered and activated users can see links. ]


    راه دیگر این است که یک فایل Batch با دستور زیر اجرا کنید که پس از اجرا خواهید دید فایلی بنام aaa.txt در کنار فایل Batch ساخته
    شده که در داخلش اعداد 1 تا 10 نوشته شده است:

    کد:
    for %%A in (1 2 3 4 5 6 7 8 9 10 ) do echo %%A >>aaa.txt

    متاسفانه توليد نشد!

    سپاس
    دوستدار هميشگي شما "eDvArDo"

    7n1wj1mlvxoxejezfhye

    دلِ هر ايراني كه براي ايران نمي‌تپد، بهتراست نتپد! (پروفسور حسابي)

    آيا پاسخ سوالي را بدانم بهتر است، يا اينكه ندانسته از دنيا بروم؟! (ابوريحان بيروني)

    پس از سالها جهد و تلاش در كسب علم و معرفت، دانستم كه هيچ ندانستم! (علامه حسن زاده آملي)

  2. 4 کاربر برای این پست سودمند از eDvArDo عزیز سپاس گذاری نموده اند:


  3. #42
    مدیر سایت
    دوستتان دارم
    تاریخ عضویت
    Jan 2012
    محل سکونت
    تهران
    نوشته ها
    2,154
    سپاس
    4,679
    سپاس گذاری شده :12,880 بار در 2,169 پست
    قدرت امتیاز دهی
    38896
    Array

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

    ادواردوی عزیز:

    فایل با پسوند Batch از ویندوز های اولیه بوده و الان فقط بخاطر سازگاری در سیستم موجود است. فرضا" اگر یک ویندوز 3.1 در
    ماشین مجازی نصب کنی نیاز خواهی داشت که از آن استفاده کنی. و یا همینطور اگر بهر علتی مثلا" اجرای بازی های قدیمی
    در ماشین مجازی سیستم عامل DOS نصب کنی نیازش داری.

    اما علت اینکه دستور آخری (for %%A in (1 2 3 4 5 6 7 8 9 10 ) do echo %%A >>aaa.txt ) در سیستم شما اجرا نشده
    همانطور که قبلا" کفتم این است که عاملی در سیستم شما از اجرای دستورات Batch جلوگیری میکند.

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


    [Only registered and activated users can see links. ]

    در ضمن با دیدن تصویر بالا من به این نتیجه میرسم که شما فایل Batch را در Notepad با نوع UTF-8 ذخیره کرده اید که
    توانسته اید علامت غیر قابل اجرا با
    Batch را تایپ و ذخیره کنید.

    [Only registered and activated users can see links. ]

    اگر نتوانستی مسئله را حل کنی ، لطفا" فایل خودت (eDvArDo.cmd ) را برایم آپلود کن.

    من نمیدانم چرا در سیستم شما فایل های Batch اجرا نمیشوند سعی میکنم علت را جستجو کرده و اگر پیدا کنم اطلاع خواهم
    داد.



  4. 5 کاربر برای این پست سودمند از Magsoud عزیز سپاس گذاری نموده اند:


  5. #43
    مدیر سایت
    دوستتان دارم
    تاریخ عضویت
    Jan 2012
    محل سکونت
    تهران
    نوشته ها
    2,154
    سپاس
    4,679
    سپاس گذاری شده :12,880 بار در 2,169 پست
    قدرت امتیاز دهی
    38896
    Array

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

    در مثال جلسه قبلی یک فایل Batch با محتوای (for %%A in (1 2 3 4 5 6 7 8 9 10 ) do echo %%A ) را اجرا کردیم و دیدیم
    که با اجرای آن اعداد 1 تا 10 بترتیب زیر هم نوشته شدند.

    ما در مثال بالا با استفاده از دستور ( echo %%A ) خواستیم که در تیجه اجرای فرمان موجودی های داخل متغیر A نشان داده شوند.
    ولی اجباری نداریم که این دستور را فقط برای نشان دادن تعدادی عدد استفاده کنیم.
    برای مثال محتوای فایل Batch بالا را با دستورات زیر عوض کرده و سپس اجرا کنید:
    @echo off
    for %%A in (1 2 3 4 5 6 7 8 9 10 ) do notepad


    خواهید دید که با اجرای آن ، اول برنامه Notepad اجرا خواهد شد. حالا برنامه Notepad را ببندید ، خواهید دید که مجددا"
    برنامه Notepad اجرا خواهد شد (برای بار دوم ). حال اگر دوباره برنامه Notepad را ببندید برای بار سوم اجرا خواهد شد.
    و همینطور الی آخر . یعنی برنامه Notepad به تعداد 10 بار (به تعداد موجودی داخل پرانتز) اجرا خواهد شد.

    در کل منظورم از این مثال مسخره این است که دستور for کاری را به تعداد موجودی داخل پرانتز تکرار میکند. در مثال
    جلسه قبل گفته بودیم که ده بار موجودی داخل متغیر A را نشان دهد و در این جا گفتیم برنامه Notepad را اجرا کند.

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

    امروز در تهران باد بسیار شدید و وحشتناکی بمدت چند ساعت وجود داشت که طبق معمول برق کل منطه ما و حداقل چند منطقه
    اطرافمان قطع شد
    و بعد از پایان یافتن طوفان ،
    ساعت ها طول کشید تا برق وصل شود و لذا دسترسی به کامپیوتر نداشتم که مطالب بیشتری بنویسم

    تا بعد اگر عمری باشد ، طوفانی نباشد و برق داشته باشیم




  6. 5 کاربر برای این پست سودمند از Magsoud عزیز سپاس گذاری نموده اند:


  7. #44
    مدیر انجمن کامپیوتر
    همديگر را دوست داشته باشيم و بهم احترام بگذاريم
    تاریخ عضویت
    Mar 2012
    محل سکونت
    زیر سایه شما
    نوشته ها
    794
    سپاس
    3,447
    سپاس گذاری شده :3,451 بار در 790 پست
    حالت من : Ghamgin
    قدرت امتیاز دهی
    13187
    Array

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

    سلام

    استاد عزيز، متن اون فايل عين دستوريه که شما گذاشتيد، آخه کپي پيست کردم!

    پيوست شد

    برای مثال محتوای فایل Batch بالا را با دستورات زیر عوض کرده و سپس اجرا کنید:
    @echo off
    for %%A in (1 2 3 4 5 6 7 8 9 10 ) do notepad



    خواهید دید که با اجرای آن ، اول برنامه Notepad اجرا خواهد شد. حالا برنامه Notepad را ببندید ، خواهید دید که مجددا"
    برنامه Notepad اجرا خواهد شد (برای بار دوم ). حال اگر دوباره برنامه Notepad را ببندید برای بار سوم اجرا خواهد شد.
    و همینطور الی آخر . یعنی برنامه Notepad به تعداد 10 بار (به تعداد موجودی داخل پرانتز) اجرا خواهد شد.
    اين يکي هم اجرا نشد!!!

    ميدونم ايراد از سيستم منه، راستي استاد اين دستورات توي همه ويندوزها يه جوره و قابل اجراست؟

    سپاس
    فایل های پیوست شده
    • نوع فایل: rar eDvArDo.rar (353 بایت)

      این فایل 3 بار دانلود شده است .

    دوستدار هميشگي شما "eDvArDo"

    7n1wj1mlvxoxejezfhye

    دلِ هر ايراني كه براي ايران نمي‌تپد، بهتراست نتپد! (پروفسور حسابي)

    آيا پاسخ سوالي را بدانم بهتر است، يا اينكه ندانسته از دنيا بروم؟! (ابوريحان بيروني)

    پس از سالها جهد و تلاش در كسب علم و معرفت، دانستم كه هيچ ندانستم! (علامه حسن زاده آملي)

  8. 4 کاربر برای این پست سودمند از eDvArDo عزیز سپاس گذاری نموده اند:


  9. #45
    مدیر سایت
    دوستتان دارم
    تاریخ عضویت
    Jan 2012
    محل سکونت
    تهران
    نوشته ها
    2,154
    سپاس
    4,679
    سپاس گذاری شده :12,880 بار در 2,169 پست
    قدرت امتیاز دهی
    38896
    Array

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

    ادواردوی عزیز
    فایل های شما در سیستم بنده هم اجرا نمیشوند. ولی:
    حالا این فایل پیوست را هم اجرا و نتیجه را اعلام کن
    فایل های پیوست شده
    • نوع فایل: rar eDvArDo_2.rar (133 بایت)

      این فایل 2 بار دانلود شده است .




  10. 4 کاربر برای این پست سودمند از Magsoud عزیز سپاس گذاری نموده اند:


  11. #46
    مدیر انجمن کامپیوتر
    همديگر را دوست داشته باشيم و بهم احترام بگذاريم
    تاریخ عضویت
    Mar 2012
    محل سکونت
    زیر سایه شما
    نوشته ها
    794
    سپاس
    3,447
    سپاس گذاری شده :3,451 بار در 790 پست
    حالت من : Ghamgin
    قدرت امتیاز دهی
    13187
    Array

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

    سلام

    عجيبه! همون دستوره ولي فايلي که شما پيوست کرديد، اجرا شد!

    چرا؟!

    سپاس
    دوستدار هميشگي شما "eDvArDo"

    7n1wj1mlvxoxejezfhye

    دلِ هر ايراني كه براي ايران نمي‌تپد، بهتراست نتپد! (پروفسور حسابي)

    آيا پاسخ سوالي را بدانم بهتر است، يا اينكه ندانسته از دنيا بروم؟! (ابوريحان بيروني)

    پس از سالها جهد و تلاش در كسب علم و معرفت، دانستم كه هيچ ندانستم! (علامه حسن زاده آملي)

  12. 4 کاربر برای این پست سودمند از eDvArDo عزیز سپاس گذاری نموده اند:


  13. #47
    مدیر سایت
    دوستتان دارم
    تاریخ عضویت
    Jan 2012
    محل سکونت
    تهران
    نوشته ها
    2,154
    سپاس
    4,679
    سپاس گذاری شده :12,880 بار در 2,169 پست
    قدرت امتیاز دهی
    38896
    Array

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

    ادواردوی عزیز
    فکر میکنم که شما برنامه Notepad خود را بطریقی تنظیم کرده اید که فایل ها را بصورت Unicode ذخیره میکند
    ولی فایل های Batch را بهتر است نوع ANSI ذخیره نمائید.

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



  14. 5 کاربر برای این پست سودمند از Magsoud عزیز سپاس گذاری نموده اند:


  15. #48
    مدیر سایت
    دوستتان دارم
    تاریخ عضویت
    Jan 2012
    محل سکونت
    تهران
    نوشته ها
    2,154
    سپاس
    4,679
    سپاس گذاری شده :12,880 بار در 2,169 پست
    قدرت امتیاز دهی
    38896
    Array

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

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

    for %%A in (1 2 3 4 5 6 7 8 9 10 ) do md C:\ABC\%%A


    بعد از اجرای مثال بالا اگر به درایو C وارد شوید خواهید دید که در آن جا پوشه ای بنام ABC درست شده و در داخل آن
    تعداد 10 عدد پوشه دیگر با نام های 1 تا 10 درست شده اند.

    اگر توضیحات بنده را درست متوجه شده باشید مطمئنا" علت را میدانید.
    =======================
    در جلسات قبل با یک نوع از موارد استفاده از دستور FOR آشنا شدیم.امروز یک چیدمان بهتر و قویتر را مطالعه میکنیم.
    باز هم مثال قبلی را در نظر میگیریم ولی این بار با امکاناتی بیشتر.

    در مثال ( for %%A in (1 2 3 4 5 6 7 8 9 10 ) do echo %%A ) میتوانستیم کاری کنیم که دستور FOR اعداد 1 تا 10
    را نشان دهد.
    حالا در نظر بگیرید که میخواهیم بجای اعداد 1 تا 10 اعداد بیشتری مثلا" 1 تا 100 و یا 1 تا 1000 را نشان دهیم.
    انجام اینکار با دستور قبلی تقریبا" نشدنی است. حداقل اشکال این است که ما باید دو ساعت وقت بگذاریم و در یک
    سطر در داخل پرانتز اعداد ا تا فرضا" 1000 را تایپ کنیم.

    پس چکار باید کرد؟
    دستور FOR چیدمانی دارد که این کار را بسیار آسان میکند حتی اگر اعدادی خیلی بزرگتر از 1000 داشته باشیم.

    دستور زیر را اجرا کنید:

    کد:
    @echo off
    FOR /L %%A IN (1,1,100) DO (
      ECHO %%A
    )
    pause >nul
    با اجرای دستور بالا اعداد 1 تا 100 بترتیب زیر هم نمایش داده خواهند شد.
    حال ببینیم دستور چگونه کار میکند.

    ما در مثال بالا دو تغییر کلی نسبت به مثال قبلی داریم. اول اینکه این بار دستور FOR را همراه سویچ L/ استفاده
    کرده ایم و دوم اینکه داخل پرانتز یک نوع دیگر نوشته شده است.

    این دستور اعمال زیر را انجام میدهد:

    1. دستور FOR به اولین عدد داخل پرانتز نگاه کرده و مقدار آن را در داخل متغیر A ذخیره میکند. و سپس به قسمت
    بعد از عبارت DO رفته و دستور موجود در آن جا را انجام میدهد. که در این زمان عدد 1 در مانیتور نوشته میشود.

    2. حالا دستور FOR دو باره به اول بر میگردد. ایندفعه اول ، به موجودی داخل متغیر A نگاه میکند که ببیند چقدر است
    (در این مثال 1 است). حال این مقدار (یعنی عدد 1 ) را با دومین عدد داخل پرانتز (که در این مثال 1 است ) جمع میکند.
    که 1 + 1 برابر 2 میشود.
    سپس مقایسه میکند که ببیند آیا مجموع این دو عدد ( یعنی عدد 2 ) نسبت به سومین عدد داخل پرانتز ( یعنی عدد 100
    در این مثال ) ، چه حالتی دارد.
    اگر ببیند این عدد از سومین عدد داخل پرانتز کمتر است دو باره به قسمت بعد از عبارت DO رفته و دستور موجود در آن
    جا را انجام میدهد. که در این زمان ما عدد 2 (یعنی 1 + 1 ) را در مانیتور خواهیم دید.

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

    بیائید مطلب را به نوع دیگری تعریف کنیم:

    __ در این نوع دستور اول اولین عدد داخل پرانتز به عنوان عدد شروع استفاده میشود. یعنی اولین عدد موجود در داخل
    پرانتز عدد start نامیده می شود. اگر ما در مثال بالا در داخل پرانتز اولین عدد را بجای 1 عدد دیگری مثلا" 4 بنویسیم
    برنامه در خروجی اعداد 4 تا 100 را نشان خواهد داد.

    __ دومین عدد داخل پرانتز عددی هست که برنامه هر بار آن عدد را به عدد موجود در متغیر اضافه خواهد کرد. این عدد
    را عدد step میگویند. ما اگر در مثال بالا ، عدد دوم داخل پرانتز را بجای عدد 1 عدد دیگری مثلا" 3 بگذاریم برنامه در انتها
    اعداد 1 ، 4 ، 7 ، 10 و... را نشان خواهد داد یعنی هر عدد نسبت به عدد قبلی بمقدار 3 عدد بیشتر خواهد بود.

    __ دستور FOR ، دستورات نوشته شده در بعد از عبارت عبارت DO را تا زمانیکه مجموع داخل متغیر و دومین عدد داخل
    پرانتز ، کمتر از سومین عدد داخل پرانتز باشد ، ادامه خواهد داد.

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

    کد:
    @echo off
    FOR /L %%A IN (10,2,100) DO (
      ECHO %%A
    )
    pause >nul
    با اجرای این مثال قاعدتا" برابر شرحی که داده شد باید اعداد 10 ، 12 ،16،14 ، 18 ....100 نشان داده شوند

    =========================
    من ساده ترین موارد استفاده از دستور FOR را توضیح دادم
    این دستور موارد استعمال فراوان دیگری هم دارد که در موردشان صحبت نکردیم.

    تا این جا من سعی کردم که شما را با مقدمات فایل های Batch آشنا کنم ولی دیگر سن و حوصله ام توان ادامه این
    مبحث را نمیدهند لذا حالا که مقدمات را فهمیدید بقیه راه به همت خودتان بستگی دارد.
    موفق باشید.




  16. 5 کاربر برای این پست سودمند از Magsoud عزیز سپاس گذاری نموده اند:


  17. #49
    مدیر انجمن کامپیوتر
    همديگر را دوست داشته باشيم و بهم احترام بگذاريم
    تاریخ عضویت
    Mar 2012
    محل سکونت
    زیر سایه شما
    نوشته ها
    794
    سپاس
    3,447
    سپاس گذاری شده :3,451 بار در 790 پست
    حالت من : Ghamgin
    قدرت امتیاز دهی
    13187
    Array

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

    سلام

    سپس مقایسه میکند که ببیند آیا مجموع این دو عدد ( یعنی عدد 2 ) نسبت به سومین عدد داخل پرانتز ( یعنی عدد 10
    در این مثال ) ، چه حالتی دارد.
    فکر ميکنم منظورتون همون عدد 100 بوده که درست تايپ نشده.

    حالا:

    1- استاد عزيز، اگه نمايش اعداد برعکس باشه، يعني از 100 به 1 با گامهاي 2تايي اونوقت دستور چطور نوشته ميشه؟

    ميدونم که اعداد اول و سوم (آغازين و پاياني) جاشون عوض ميشه ولي با چه سوييچي ويا به چه عبارت و دستوري "کنترل کم شدن" (گامهاي کاهشي) انجام ميگيره؟

    2- درضمن اگه بخواهيم نمايش اعداد "مابين" اعداد آغازين تا پاياني انجام بگيره، دستور چطور ميشه؟

    3- نمايش اعداد اگه بجاي ستوني، پشت‌سر هم و سطري بشه (مثلاً با دو فضاي خالي)، دستور چطور خواهد بود؟

    سپاس
    دوستدار هميشگي شما "eDvArDo"

    7n1wj1mlvxoxejezfhye

    دلِ هر ايراني كه براي ايران نمي‌تپد، بهتراست نتپد! (پروفسور حسابي)

    آيا پاسخ سوالي را بدانم بهتر است، يا اينكه ندانسته از دنيا بروم؟! (ابوريحان بيروني)

    پس از سالها جهد و تلاش در كسب علم و معرفت، دانستم كه هيچ ندانستم! (علامه حسن زاده آملي)

  18. 4 کاربر برای این پست سودمند از eDvArDo عزیز سپاس گذاری نموده اند:


  19. #50
    مدیر سایت
    دوستتان دارم
    تاریخ عضویت
    Jan 2012
    محل سکونت
    تهران
    نوشته ها
    2,154
    سپاس
    4,679
    سپاس گذاری شده :12,880 بار در 2,169 پست
    قدرت امتیاز دهی
    38896
    Array

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

    با دستور زیر اعداد مابین 100 تا 10 بطور معکوس وبصورت (100 ، 98 ، 96 و....) نشان داده خواهند شد در اینجا در داخل پرانتز
    عدد شروع 100 انتخاب شده لذا از عدد 100 شروع میکند ، عدد Step -2 انتخاب شده یعنی در هر دور باید دو تا کم شود:

    کد:
    @echo off
    FOR /L %%A IN (100,-2,10) DO (
      ECHO %%A
    ) 
    pause >nul



  20. 6 کاربر برای این پست سودمند از Magsoud عزیز سپاس گذاری نموده اند:


صفحه 5 از 14 نخستنخست 123456789 ... آخرینآخرین

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

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

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

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

http://www.worldup.ir/