07
مهBatch Scripting یا اسکریپتنویسی بچ، یک روش قدرتمند برای خودکارسازی وظایف در سیستمعامل ویندوز است. با استفاده از Batch Scripting، میتوانید دستورات متعددی را در یک فایل متنی ساده ذخیره کرده و آنها را به صورت خودکار اجرا کنید. این فایلها با پسوند .bat یا .cmd ذخیره میشوند و توسط Command Prompt ویندوز اجرا میگردند. در این مقاله، به آموزش کامل Batch Scripting میپردازیم و مفاهیم پایه تا پیشرفته را پوشش میدهیم.
سادگی: Batch Scripting نیازی به نصب نرمافزارهای اضافی ندارد و تنها با استفاده از Command Prompt ویندوز قابل اجرا است.
خودکارسازی: با استفاده از Batch Scripting، میتوانید وظایف تکراری را به صورت خودکار انجام دهید.
انعطافپذیری: Batch Scripting از دستورات متنوعی پشتیبانی میکند که میتوانند برای انجام کارهای مختلف استفاده شوند.
سازگاری: Batch Scripting با تمام نسخههای ویندوز سازگار است.
برای ایجاد یک فایل Batch، مراحل زیر را دنبال کنید:
یک فایل متنی جدید ایجاد کنید (مثلاً با استفاده از Notepad).
دستورات مورد نظر خود را در این فایل وارد کنید.
فایل را با پسوند .bat یا .cmd ذخیره کنید (مثلاً myscript.bat).
برای اجرای فایل Batch، کافی است روی آن دوبار کلیک کنید یا آن را از طریق Command Prompt اجرا کنید:
C:\path\to\myscript.bat
ECHOدستور ECHO برای نمایش متن در خروجی استفاده میشود. اگر ECHO به تنهایی استفاده شود، وضعیت فعلی نمایش دستورات را نشان میدهد.
ECHO Hello, World!برای غیرفعال کردن نمایش دستورات، از دستور @ECHO OFF استفاده کنید:
@ECHO OFF ECHO Hello, World!
REMدستور REM برای اضافه کردن توضیحات به اسکریپت استفاده میشود. این دستور توسط مفسر نادیده گرفته میشود.
REM This is a comment ECHO Hello, World!
PAUSEدستور PAUSE اجرای اسکریپت را متوقف کرده و منتظر فشار دادن یک کلید توسط کاربر میماند.
ECHO Press any key to continue... PAUSE
CLSدستور CLS صفحه Command Prompt را پاک میکند.
CLS ECHO Screen cleared!
در Batch Scripting، متغیرها با استفاده از دستور SET تعریف میشوند. برای دسترسی به مقدار متغیر، از % قبل و بعد از نام متغیر استفاده کنید.
SET myVar=Hello ECHO %myVar%
Batch Scripting از متغیرهای محیطی ویندوز نیز پشتیبانی میکند. برای مثال، %USERNAME% نام کاربری فعلی را برمیگرداند.
ECHO Current user: %USERNAME%IFدستور IF برای اجرای شرطی دستورات استفاده میشود. ساختار کلی آن به صورت زیر است:
IF condition commandمثال:
SET myVar=10 IF %myVar%==10 ECHO The value is 10
IF EXISTدستور IF EXIST برای بررسی وجود یک فایل یا پوشه استفاده میشود.
IF EXIST myfile.txt ECHO File exists
IF NOTدستور IF NOT برای اجرای دستورات در صورتی که شرط برقرار نباشد استفاده میشود.
IF NOT EXIST myfile.txt ECHO File does not exist
FORدستور FOR برای ایجاد حلقهها استفاده میشود. ساختار کلی آن به صورت زیر است:
FOR %%variable IN (set) DO command
مثال:
FOR %%i IN (1 2 3 4 5) DO ECHO %%i
GOTOدستور GOTO برای پرش به یک برچسب (label) در اسکریپت استفاده میشود.
GOTO mylabel ECHO This will not be executed :mylabel ECHO Jumped to mylabel
COPYدستور COPY برای کپی کردن فایلها استفاده میشود.
COPY source.txt destination.txtMOVEدستور MOVE برای جابجایی فایلها استفاده میشود.
MOVE source.txt destination.txtDELدستور DEL برای حذف فایلها استفاده میشود.
DEL myfile.txtMD و RDدستور MD برای ایجاد پوشه و دستور RD برای حذف پوشه استفاده میشود.
MD newfolder RD newfolder
SET /Pدستور SET /P برای دریافت ورودی از کاربر استفاده میشود.
SET /P name=Enter your name: ECHO Hello, %name%!
@ECHO OFF SET backupDir=C:\backup IF NOT EXIST %backupDir% MD %backupDir% COPY C:\myfiles\*.* %backupDir% ECHO Backup completed! PAUSE
@ECHO OFF IF EXIST myfile.txt ( ECHO File exists DEL myfile.txt ) ELSE ( ECHO File does not exist ECHO Creating file... ECHO. > myfile.txt ) PAUSE
@ECHO OFF FOR %%i IN (*.txt) DO ( ECHO Processing %%i COPY %%i C:\backup\%%i ) ECHO All files processed! PAUSE
در بخش قبلی، مفاهیم پایهای Batch Scripting را بررسی کردیم. در این بخش، به موضوعات پیشرفتهتر و تکنیکهای کاربردیتر در Batch Scripting میپردازیم. این موضوعات شامل کار با توابع، مدیریت خطاها، استفاده از رجیستری، و بهینهسازی اسکریپتها میشوند.
در Batch Scripting، توابع به صورت زیر تعریف و استفاده میشوند. توابع به شما امکان میدهند کدهای تکراری را در یک بلوک جداگانه قرار داده و آنها را چندین بار فراخوانی کنید.
برای تعریف یک تابع، از برچسبها (Labels) و دستور GOTO استفاده میکنیم. ساختار کلی یک تابع به صورت زیر است:
:functionName REM کدهای تابع اینجا قرار میگیرند GOTO:EOF
:functionName: نام تابع که با : شروع میشود.
GOTO:EOF: پایان تابع و بازگشت به نقطهی فراخوانی.
برای فراخوانی یک تابع، از دستور CALL استفاده میکنیم:
CALL :functionName@ECHO OFF CALL :sayHello PAUSE EXIT /B :sayHello ECHO Hello, World! GOTO:EOF
در این مثال، تابع sayHello تعریف شده و با دستور CALL فراخوانی میشود.
توابع در Batch Scripting میتوانند پارامتر دریافت کنند. پارامترها با استفاده از %1, %2, و غیره قابل دسترسی هستند.
@ECHO OFF CALL :greetUser John PAUSE EXIT /B :greetUser ECHO Hello, %1! GOTO:EOF
در این مثال، تابع greetUser یک پارامتر دریافت میکند و آن را نمایش میدهد.
مدیریت خطاها در Batch Scripting بسیار مهم است، زیرا به شما امکان میدهد در صورت بروز مشکل، اسکریپت را به درستی مدیریت کنید.
ERRORLEVELمتغیر ERRORLEVEL کد خطای آخرین دستور اجرا شده را ذخیره میکند. اگر دستور با موفقیت اجرا شود، ERRORLEVEL برابر 0 خواهد بود.
@ECHO OFF COPY non_existent_file.txt C:\backup\ IF %ERRORLEVEL% NEQ 0 ( ECHO Error: File not found! ) PAUSE
در این مثال، اگر فایل وجود نداشته باشد، پیام خطا نمایش داده میشود.
EXIT /Bدستور EXIT /B برای خروج از اسکریپت یا تابع استفاده میشود. میتوانید یک کد خطا به آن پاس دهید:
@ECHO OFF CALL :checkFile IF %ERRORLEVEL% EQU 1 ( ECHO Error: File not found! ) PAUSE EXIT /B :checkFile IF NOT EXIST myfile.txt ( EXIT /B 1 ) EXIT /B 0
در این مثال، اگر فایل وجود نداشته باشد، تابع با کد خطای 1 خاتمه مییابد.
Batch Scripting میتواند برای خواندن و نوشتن مقادیر در رجیستری ویندوز استفاده شود. این کار با استفاده از دستور REG انجام میشود.
برای خواندن یک مقدار از رجیستری، از دستور REG QUERY استفاده میکنیم:
@ECHO OFF REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion" /v ProgramFilesDir PAUSE
این دستور مسیر دایرکتوری برنامهها را از رجیستری میخواند.
برای نوشتن یک مقدار در رجیستری، از دستور REG ADD استفاده میکنیم:
@ECHO OFF REG ADD "HKEY_CURRENT_USER\Software\MyApp" /v MyKey /t REG_SZ /d "MyValue" PAUSE
این دستور یک کلید جدید در رجیستری ایجاد میکند.
برای بهبود عملکرد و خوانایی اسکریپتها، میتوانید از تکنیکهای زیر استفاده کنید:
SETLOCAL و ENDLOCALدستورات SETLOCAL و ENDLOCAL برای محدود کردن تغییرات متغیرها به بلوک فعلی استفاده میشوند. این کار از تداخل متغیرها جلوگیری میکند.
@ECHO OFF SETLOCAL SET myVar=Hello ECHO %myVar% ENDLOCAL ECHO %myVar% REM این خط مقدار myVar را نمایش نمیدهد PAUSE
FOR /Fدستور FOR /F برای پردازش فایلها یا خروجی دستورات استفاده میشود. این دستور بسیار قدرتمند است و میتواند برای تجزیه و تحلیل متن استفاده شود.
@ECHO OFF FOR /F "tokens=*" %%i IN (myfile.txt) DO ( ECHO Line: %%i ) PAUSE
در این مثال، هر خط از فایل myfile.txt خوانده و نمایش داده میشود.
@ECHO OFF SETLOCAL SET backupDir=C:\backup SET sourceDir=C:\myfiles IF NOT EXIST %backupDir% MD %backupDir% FOR /F "tokens=*" %%i IN ('DIR /B %sourceDir%') DO ( ECHO Copying %%i... COPY "%sourceDir%\%%i" "%backupDir%\%%i" ) ECHO Backup completed! ENDLOCAL PAUSE
در این مثال، تمام فایلهای موجود در C:\myfiles به C:\backup کپی میشوند.
با استفاده از دستور SC، میتوانید وضعیت سرویسهای ویندوز را بررسی کنید:
@ECHO OFF SC QUERY Winmgmt > service_status.txt ECHO Service status saved to service_status.txt PAUSE
این دستور وضعیت سرویس Winmgmt را در فایل service_status.txt ذخیره میکند.
Batch Scripting یک ابزار قدرتمند برای خودکارسازی وظایف در ویندوز است. با استفاده از دستورات ساده و انعطافپذیر Batch Scripting، میتوانید کارهای تکراری را به صورت خودکار انجام دهید و در زمان و تلاش خود صرفهجویی کنید. این مقاله مفاهیم پایه تا پیشرفته Batch Scripting را پوشش داد و مثالهای متعددی برای درک بهتر این مفاهیم ارائه کرد. با تمرین و تجربه، میتوانید از Batch Scripting برای انجام کارهای پیچیدهتر و خودکارسازی فرآیندهای مختلف استفاده کنید.
در خبرنامه ما مشترک شوید و آخرین اخبار و به روزرسانی های را در صندوق ورودی خود مستقیماً دریافت کنید.

دیدگاه بگذارید