batfile

.bat fayllar haqida

.bat fayllar – oddiy tekst fayl bo‘lib .bat yoki ba’zida .cmd kengaytma (“rasshireniya”)siga ega bo‘ladi. .bat fayllarda cmd-konsolda ishlatilishi mumkin bo‘lgan buyruqlar yoziladi. cmd konsolda ishlatish mumkin bo‘lgan har qanday buyruq dasturni .bat faylida ham ishlatish mumkin. .bat fayllardan asosan ma’lum ishlarni avtomatlashtirish uchun foydalaniladi. .bat fayllar bilan har qanday tekst redaktori yordamida ishlash mumkin (masalan bloknot dasturi yordamida).

echo buyrug‘i

Konsolda echo > 1.bat deb buyruq bersak, yangi 1.bat fayli tuziladi. Bu faylni bloknot yordamida ko‘rish uchun:
notepad.txt 1.bat deb buyruq beramiz. Ya’ni, bloknot dasturiga argument sifatida 1.bat faylini nomini berib yuboramiz.

1-4

 

Shunda bloknot dasturi 1.bat faylini ochib beradi. Ko‘rib turganimizdek echo buyrug‘i 1.bat fayli ichiga ECHO is on degan tekstni yozib qo‘yibdi. Uni o‘chirib tashlaymiz va quyidagi tekstni yozamiz:

echo assalomu aleykum
@echo valekum assalom
@rem echo assalomu aleykum 2
@echo =============================================

2-1

1.bat faylini ishlatib yuborish uchun konsolda 1.bat deb yozamiz. Konsoldagi natija:

3-1

Keling, 1.bat faylga yozilgan tekstni o‘rganamiz. Birinchi qatorda echo assalomu aleykum deb yozilgan. echo buyrug‘i unga berilgan tekstni konsolga chiqarish uchun ishlatiladi. Ammo, shu bilan birga buyruqni o‘zi ham konsolga chiqariladi. Ya’ni, avval buyruqni o‘zi echo assalomu aleykum konsolga chiqariladi. Keyin esa buyruq bajariladi va konsolga assalomu aleykum keyingi qatordan yana chiqariladi. Har qanday buyruq avvaliga @ (kuchukcha belgisi) qo‘yilsa, faqatgina buyruqni natijasi konsolga chiqariladi, buyruqni o‘zi konsolga chiqarilmaydi. Shuning uchun ham ikkinchi qatordagi @echo valekum assalom buyrug‘ida konsolga faqatgina valekum assalom teksti chiqarildi, ya’ni echo buyrug‘ini natijasi. Uchinchi qator esa umuman ishlamadi. Sababi, rem buyrug‘i qatorni sharxlashni bildiradi. Ya’ni, qaysi kod avvalida rem buyrug‘i bo‘lsa, u qator sharh (kommentariy) hisoblanadi shuning uchun u bajarilmaydi.
To‘rtinchi qatorning xam avvalida @ bo‘lgani uchun konsolga buyruqni o‘zi chiqarilmasdan balki buyruqni ishlash natijasi chiqarildi.

Keling endi D: diskda 2.bat faylini tuzamiz va unga quyidagi kodni kiritamiz:
@D:\dastur.exe
faylni saqlab qo‘yib, 2.bat ni konsoldan chaqiramiz:

4-1

Natijada, bunday dastur mavjud emasligi ma’nosidagi xatolik ro‘y beradi. Haqiqatdan ham bizda bunday dastur (fayl) mavjud emas.

if buyrug‘i
.bat fayllarda diskdagi fallar mavjudligini tekshirish uchun if exist buyruqlaridan foydalanishimiz mumkin. 2.bat faylini o‘zgartiramiz:
@if exist D:\dastur.exe (D:\dastur.exe)  else (Echo bunday fayl mavjud emas)

5-1

Konsoldan 2.bat ni yana chaqiradigan bo‘lsak, natijada konsolga bunday fayl mavjud emas degan tekst chiqariladi. Demak, agar .bat fayllarda biron bir “kontkret” (muayyan) fayl bilan ishlamoqchi bo‘lsak avvalo uni mavjudligini tekshirib olishimiz lozim.

6-1

.bat fayllarni parametr bilan ishlatish

Parametrlar yordamida .bat fayliga boshlang‘ich, kiruvchi qiymatlarni berib yuborish mumkin. Masalan, shunday .bat fayl yozish mumkinki, unga parametr sifatida biron bir faylni diskdagi manzili berilsa, .bat fayl o‘sha fayl bilan qandaydir ishlarni bajarishi (masalan, (backup) bekap qilishi) mumkin. Shunda bu .bat fayl nisbatan universalroq .bat faylga aylanadi. Agar parametrlar ko‘p bo‘lsa, ular bir biridan probel yordamida ajratiladi. Misol uchun, 3.bat degan fayl tuzamiz va unga quyidagi kodni kiritamiz:

@echo birinchi parameter - %1
@echo ikkinchi parameter - %2

7

3.bat faylini konsoldan quyidagicha chaqiramiz:

3.bat bir ikki

Ya’ni, uning birinchi parametri – bir, ikkinchi parametri esa – ikki.
Natija quyidagicha bo‘ladi:

8-1

Konsoldan 4.bat ni yoqib yuboramiz:10

Ko‘rib turganimizdek, yangi oynada cmd.exe ya’ni konsol dasturi ishlab ketdi. Biron bir dastur start buyrug‘i orqali chaqirilsa, yoqib yuborilgan dastur uni yoquvchi dasturdan alohida yoqilgan bo‘ladi. Ya’ni, yoqilgan dastur uni yoqib yuborgan jarayondan mustaqil bo‘ladi. Birinchi dastur ikkinchi dasturini ishlashini kutib turishi, ya’ni yoqib yuborilayatgan dastur, uni yoquvchi dastur (jarayon)ga ergashuvchi bo‘lishi uchun call buyrug‘i ishlatiladi. 5.bat faylini tuzamiz va unga quyidagi kodni yozamiz:

@call cmd.exe

 

11

Konsoldan 5.bat ni ishlatamiz va natijada avvalgi konsolni ichida yangi konsol ishlab ketadi. Yuqoriga va pastga tugmachalarini bosib ko‘rsangiz ham, avvalgi konsolda berilgan buyruqlar ochilmaydi. Aslida, yangi konsol boshqa oynada emas, balki hozirgi ishlab turgan oynada ochildi.

12

Bu “yangi” kosnolni yopish uchun exit buyrug‘i beriladi:

13

Shunda biz yana (avvalgi) asosiy konsolga qaytamiz. Yuqoriga va pastga tugmalarni bossangiz, avvalgi bergan buyruqlar ham qaytib keladi.

pause buyrug‘i berilganda dasturni ishlashi to‘xtatib turiladi va davom etishlik uchun biron bir klavishani bosishlik talab etiladi.
Yangi 6.bat faylini tuzib unga:

@echo bu oltinchi misol
@pause

kodni yozib qo‘ying:

14

Konsoldan 6.bat ni ishlatib yuboring:

15

O‘zgaruvchilar bilan ishlash
.bat fayli ichida o‘zgaruvchilarni e’lon qilib, ularni qiymatini belgilash mumkin. Buning uchun set buyrug‘i ishlatiladi. O‘zgaruvchiga murojaat qilishlik uchun esa uning nomi foiz belgilari ichiga olib yoziladi – %uzgaruvchi%.
Yangi 7.bat faylini tuzib unga quyidagi tekstni kiriting:

@set ism=Farhod
@echo sizning ismingiz - %ism%

16

7.bat faylini konsoldan ishlatib yuboring. Natija:

17

Agarda kattaroq .bat fayl ustida ishlayatgan bo‘lsangiz, har bir qator boshiga @ belgisini qo‘yish noqulay bo‘ladi. Bundan qutulish uchun faylni eng birinchi qatoriga @echo off buyrug‘i yozib qo‘yilsa, har bir buyruq boshiga @ yozishdan qutulamiz.
goto buyrug‘i yordamida .bat faylni bajarilishi, berilgan belgiga o‘tiladi. .bat fayli ichidagi belgilar (ikki nuqta) bilan boshlanadi.
8.bat faylini tuzing va unga quyidagi tekstni yozing:

@echo off
IF [%1]==[] goto Chiqish
set parametr=%1
if %parametr%==tozala goto Tozala
goto Chiqish
:Tozala
cls
:Chiqish

18

Bu kod yordamida avvalo biz dasturga berilgan parametr bo‘shliqqa tekshirilmoqda. Agarda bizni .bat fayl birorta ham parametrsiz chaqirilsa, dasturni bajarilishi Chiqish belgisiga o‘tadi va tabiiyki hech narsa bajarilmaydi. Agarda dasturni parametri bo‘sh bo‘lmasa, uning qiymati parameter o‘zgaruvchisiga beriladi. Undan keyin if blokida parameter o‘zgaruvchisini qiymati tekshirilmoqda. Agarda u tozala ga teng bo‘lsa, dasturni bajarilishi Tozala belgisiga o‘tadi. U blokda esa cls buyrug‘i yozilgan, ya’ni konsol tozalanadi. Agarda dasturga berilgan parametr  i ga teng bo‘lmasa dasturni bajarilishi yana Chiqish belgisiga boradi va dastur o‘z ishini tugatadi.

19

For sikli
For sikli yordamida bir ishni bir necha marotaba, shart bajarilgunga qadar bajarish mumkin. Quyidagi misolda, papkadagi barcha tekst faylarini nomi konsolga chiqariladi. D: diskda mevazor papkasini tuzing va uni ichida bir qancha tekst fayllarini tuzing. Shundan so‘ng,
8.bat faylini tuzib, unga quyidagi kodni kiriting:

@echo off
set "folder=d:\mevazor"
for %%F in ("%folder%\*.txt") do (
@echo %%F
)

20

Natijada konsolga mevazor papkasidagi barcha tekst fayllar ko‘rsatiladi.

21

(932 marta o'qilgan, bugun 1 marta o'qildi)

O'xshash maqolalar: