بد ندیدم که یک مثال دیگر در رابطه با دستوری که مطالعه کردیم را داشته باشیم.
فایل 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 آشنا کنم ولی دیگر سن و حوصله ام توان ادامه این
مبحث را نمیدهند لذا حالا که مقدمات را فهمیدید بقیه راه به همت خودتان بستگی دارد.
موفق باشید.
علاقه مندی ها (بوک مارک ها)