انواع مختلفی از دستورات IF وجود دارد که می توانید در یک فایل دسته ای ویندوز از آنها برای صرفه جویی در زمان و تلاش استفاده کنید. این نمونه ها را بررسی کنید تا بیشتر بدانید.
اگر در فایلهای دستهای ویندوز کار زیادی انجام میدهید، دستور IF یک راه بسیار قدرتمند برای افزودن انعطافپذیری به اسکریپتهای شما ارائه میدهد.
در این مقاله، شما قصد دارید با پنج نوع اصلی از دستورات IF که میتوانید در یک فایل دستهای ویندوز استفاده کنید، نحو درست به نظر میرسد و یک مثال واقع بینانه برای هر کدام بیاموزید.
اگر برای شروع اسکریپت آماده هستید، بیایید شروع کنیم.
1. مقایسه ارزش ها
یکی از کارهای اساسی که معمولاً باید در یک اسکریپت دسته ای انجام دهید این است که دو مقدار را با هم مقایسه کنید و بسته به مقایسه، مسیر عمل متفاوتی را دنبال کنید.
به عنوان مثال، فرض کنید می خواهید یک اسکریپت دسته ای بنویسید که اندازه هارد دیسک رایانه شما را روزانه بررسی می کند. اگر کمتر از 3 گیگابایت است، میخواهید یک گزارش ایمیل دریافت کنید که میگوید «فضای هارد درایو خیلی کم است».
برای ایجاد یک اسکریپت که فضای آزاد فعلی هارد دیسک را با محدودیت شما مقایسه می کند، باید اسکریپت دسته ای زیر را ایجاد کرده و آن را به عنوان یک فایل bat ذخیره کنید.
@echo off
set DriveLimit=300000000
for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x
Echo FreeSpace="%FreeSpace%"
Echo Limit="%DriveLimit%"
If %FreeSpace% GTR %DriveLimit% (
Echo There is enough free space.
) else (
Echo Not enough free space.
)
در اسکریپت، WMIC جزء ابزارهای مدیریت ویندوز (WMI) ویندوز است که با مجموعهای از دستورات ارائه میشود که میتوانید از آنها برای استخراج اطلاعات از رایانه شخصی خود استفاده کنید.
به این ترتیب دستور “wmic” در این اسکریپت فضای logicaldisk را فراخوانی می کند و آن را در متغیر FreeSpace قرار می دهد.
اکنون میتوانید خط Echo Not کافی فضای خالی را با دستوری برای ارسال هشدار از طریق ایمیل جایگزین کنید. اسکریپت را طوری تنظیم کنید که روزانه اجرا شود.
2. مقایسه رشته ها
یکی دیگر از مقایسههای ارزشمند IF که میتوانید در یک کار دستهای انجام دهید، مقایسه رشتهها است.
در مثال زیر، نحوه بررسی نسخه ویندوز خود را با استفاده از یک کار دسته ای خواهید دید. سپس می توانید آن را با نسخه ویندوز مورد انتظار خود مقایسه کنید.
برخی از کاربردهای این اسکریپت برای ممیزی فناوری اطلاعات زمانی است که شما نیاز دارید به سرعت یک اسکریپت را اجرا کنید و مطمئن شوید که سیستم عامل فعلی جدیدترین است یا نیاز به ارتقا دارد.
این اسکریپت به شکل زیر است:
@echo off
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "6.0" echo Windows Vista.
if "%version%" == "6.1" echo Windows 7
if "%version%" == "6.2" echo Windows 8
if "%version%" == "6.3" echo Windows 8.1
if "%version%" == "10.0" echo Windows 10.
خروجی این اسکریپت به صورت زیر است:
توانایی مقایسه رشته ها در یک دسته، فهرست کاملی از احتمالات را باز می کند. اگر تمام اطلاعاتی را که می توانید از یک دستور WMIC به دست آورید کاوش کنید، خواهید دید که چه تعداد آمار در مورد رایانه خود می توانید نظارت کنید.
علاوه بر این، حتی میتوانید از کارهای دستهای برنامهریزیشده برای دریافت هشدار در این مورد استفاده کنید.
3. بررسی کنید که آیا یک فایل وجود دارد
موقعیت مفید دیگری که در آن یک دستور IF در یک فایل دستهای، بررسی وجود یک فایل داده است.
بسیاری از اوقات، کار دسته ای فقط یک ابزار نظارتی است که می توانید برای بررسی فایل های داده های ورودی جدید در یک فهرست خاص برنامه ریزی کنید. سپس، میتوانید آن فایل را در مکان دیگری کپی کنید یا برخی از اسکریپتهای ویندوز را اجرا کنید که فایل را به خروجی اکسل پردازش میکند.
استفاده از یک فایل دسته ای برای بررسی اینکه آیا یک فایل در یک دایرکتوری وجود دارد سریع و آسان است. این اسکریپت به شکل زیر است:
@echo off
if exist c:\temp\datafile.txt (
%WINDIR%\SysWOW64\cmd.exe
cscript LoadToExcel.vbs
) else (
rem file doesn't exist
)
مقایسه IF EXISTS برای خیلی چیزها مفید است.
برای مثال، اگر سیستم یا برنامهای در حال اجرا دارید که در صورت بروز مشکل، گزارشهای خطای جدیدی را در یک پوشه خاص ایجاد میکند، میتوانید هر چند وقت یکبار یک کار دستهای را اجرا کنید. به این ترتیب، می توانید به راحتی نظارت کنید که آیا گزارش های خطای جدید ایجاد می شود تا بتوانید هشدار ارسال کنید.
4. بررسی کنید که آیا یک فرمان شکست خورده است
یکی از جنبههای برنامهنویسی دستهای فایل که تعداد کمی از افراد فناوری اطلاعات یا برنامهنویسان از آن استفاده میکنند، بررسی خطاها است.
کارهای دستهای زیادی وجود دارند که وظایف مهم فناوری اطلاعات مانند پشتیبانگیری از فایلهای مهم یا اجرای عملیات کپی فایل را انجام میدهند. وقتی این کارهای دستهای با شکست مواجه میشوند، سیستمها از کار میافتند و مردم معمولاً متوجه میشوند.
زمانی که کار دستهای شما در یک فرمان شکست خورده است، قبل از اینکه مردم متوجه شوند، بسیار هوشمندانهتر است. به این ترتیب، می توانید به طور فعال مشکل را برطرف کنید.
می توانید این کار را با استفاده از متغیر %errorlevel% که اکثر برنامه ها و دستورات پس از اجرا برمی گردانند، انجام دهید. تنها کاری که باید انجام دهید این است که دستور خود را با دستور IF %ERRORLEVEL% دنبال کنید.
@echo off
xcopy C:
omefolder E:\backupfolder
IF %ERRORLEVEL% NEQ 0 <blat command to send email>
اگر برنامه یا دستور صفر را برگرداند، همه چیز خوب است. اگر نه، پس باید برای خود ایمیل بفرستید.
با این حال، شما مجبور نیستید مسیر ایمیل را انتخاب کنید. همیشه می توانید یک گزارش خطا بنویسید که ممکن است هر روز صبح آن را بررسی کنید، یا یک برنامه یا دستور دوم را اجرا کنید که سعی می کند با استفاده از یک دستور جایگزین، کپی را انجام دهد.
علاوه بر این، اگر ترجیح می دهید از عبارت IF برای بررسی کدهای خطای خاص استفاده کنید، ویندوز لیست بسیار گسترده ای از کدهای خطای سیستم را ارائه می دهد.
5. پارامترهای گمشده را بررسی کنید
آخرین دستور IF مفید برای یک دستور خاص نیست، بلکه برای بررسی اینکه اسکریپت پارامترهای ورودی مناسب را دریافت کرده است.
به عنوان مثال، فرض کنید یک اسکریپت نوشته اید که یک فرمان xcopy را از یک پوشه ورودی به یک پوشه شبکه مشترک که توسط یک تیم استفاده می شود، انجام می دهد. کاربر فقط باید نام اسکریپت شما را با پارامترهای تعیین کننده مسیر فایل شخصی خود دنبال کند.
شما نمی توانید اسکریپت خود را بدون مسیر مشخص شده به درستی اجرا کنید، بنابراین ممکن است بخواهید یک عبارت IF را در ابتدای اسکریپت خود قرار دهید تا مطمئن شوید که هر دو پارامتر وارد شده اند.
@echo off
IF [%1]==[] (
GOTO sub_message
) ELSE (
xcopy %1 E:\backupfolder
)
GOTO eof
:sub_message
echo You forgot to specify your path.
:eof
اگر قبلاً هرگز از پارامترها با اسکریپت دسته ای استفاده نکرده اید، نماد درصد به دنبال یک عدد نشان دهنده متغیر پارامتر است. % 1 اولین پارامتر، % 2 دومین و غیره است.
به طور کلی، دستورات IF بسیار مفید هستند و برای استفاده از آنها نیازی به نوشتن کدهای زیادی ندارید. البته، اگر میخواهید آن را یک درجه بالا ببرید، میتوانید با راهنمای ما در مورد ایجاد اولین برنامه VBA خود، نگاهی به VBA بیندازید.
مشاغل دسته ای می توانند قدرتمند باشند
بسیاری از افراد شروع به استفاده از کارهای دسته ای برای کارهای ساده ای کردند که باید به صورت متوالی اجرا شوند. خوشبختانه، با دستورات IF، می توان منطق بسیار بیشتری به اسکریپت های خود اضافه کرد.
علاوه بر این، اغلب میتوانید از زبانهای برنامهنویسی پیشرفتهتر استفاده کنید و از PowerShell برای انجام بسیاری از کارهایی که در حال حاضر از کارهای دستهای استفاده میکنید، استفاده کنید.