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.txt
MOVE
دستور MOVE
برای جابجایی فایلها استفاده میشود.
MOVE source.txt destination.txt
DEL
دستور DEL
برای حذف فایلها استفاده میشود.
DEL myfile.txt
MD
و 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 برای انجام کارهای پیچیدهتر و خودکارسازی فرآیندهای مختلف استفاده کنید.
دیدگاه بگذارید