Паролингизни унутдингизми?
Login
Left, Right, Center Left, Center, Right Center, Left, Right



.bat файллар хақида

.bat файллар хақид

.bat файллар - оддий текст файл бўлиб .bat ёки баъзида .cmd "расширения"сига эга бўлади. .bat файлларда cmd-консольда ишлатилиши мумкин бўлган буйруқлар ёзилади. cmd консольда ишлатиш мумкин бўлган хар қандай буйруқ/дастур ни .bat файлида хам ишлатиш мумкин.

.bat файллардан асосан маълум ишларни автоматлаштириш учун фойдаланилади. .bat файллар билан хар қандай текст редактори ёрдамида ишлаш мумкин (масалан блокнот дастури ёрдамида).

echo буйруғи

Консольда echo > 1.bat деб буйруқ берсак, янги 1.bat файли тузилади. Бу файлни блокнот ёрдамида кўришлик учун:
notepad.txt 1.bat деб буйруқ берамиз. Яъни блокнот дастурига аргумент сифатида 1.bat файлини номини бериб юборамиз.

Шунда блокнот дастури 1.bat файлини очиб беради. Кўриб турганимиздек echo буйруғи 1.bat файли ичига ECHO is on деган текстни ёзиб қўйибди. Уни ўчириб ташлаймиз ва қуйидаги текстни ёзамиз:
echo assalomu aleykum
@echo valekum assalom
@rem echo assalomu aleykum 2
@echo =============================================

1.bat файлини ишлатиб юборишлик учун консольда: 1.bat деб ёзамиз. Консольдаги натижа:

Келинг, 1.bat файлга ёзилган текстни ўрганамиз. Биринчи қаторда echo assalomu aleykum деб ёзилган. echo буйруғи унга берилган текстни
консольга чиқаришлик учун ишлатилади. Аммо, шу билан бирга буйруқни ўзи хам консольга чиқарилади. Яъни, аввал буйруқни ўзи:
echo assalomu aleykum консольга чиқарилади. кейин эса буйруқ бажарилади ва консольга assalomu aleykum кейинги қатордан яна
чиқарилади. Хар қандай буйруқ аввалига @ (кучукча белгиси) қўйилса, фақатгина буйруқни натижаси консольга чиқарилади, буйруқни ўзи консольга чиқарилмайди. Шунинг учун хам иккинчи қатордаги:
@echo valekum assalom буйруғида консольга фақатгина valekum assalom
тексти чиқарилди, яъни echo буйруғини натижаси. Учинчи қатор эса умуман ишламади. Сабаби, rem буйруғи қаторни шархлашни билдиради. Яъни, қайси код аввалида rem буйруғи бўлса, у қатор шарх (комментарий) хисобланади шунинг учун у бажарилмайди.
Тўртинчи қаторнинг хам аввалида @ бўлгани учун консольга буйруқни ўзи чиқарилмасдан балки буйруқни ишлаш натижаси чиқарилди.
Келинг энди D: дискда 2.bat файлини тузамиз ва унга қуйидаги кодни киритамиз:
@D:\dastur.exe
файлни сақлаб қўйиб, 2.bat ни консольдан чақирамиз:

Натижада, бундай дастур мавжуд эмаслиги маъносидаги хатолик рўй беради. Хақийқатдан хам бизда бундай дастур (файл) мавжуд эмас.

if буйруғи
.bat файлларда дискдаги фаллар мавжудлигини текшириш учун if exist буйруқларидан фойдаланишимиз мумкин. 2.bat файлини ўзгартирамиз:
@if exist D:\dastur.exe (D:\dastur.exe)  else (Echo bunday fayl mavjud emas)

Консольдан 2.bat ни яна чақирадиган бўлсак, натижада консольга bunday fayl mavjud emas деган текст чиқарилади. Демак, агар .bat файлларда бирон бир "конткрет" файл билан ишламоқчи бўлсак аввало уни мавжудлигини текшириб олишимиз лозим.

.bat файлларни параметр билан ишлатиш

Параметрлар ёрдамида .bat файлига бошланғич, кирувчи қийматларни бериб юбориш мумкин. Масалан, шундай .bat файл ёзиш мумкинки унга параметр сифатида бирон бир файлни дискдаги манзили берилса, .bat файл ўша файл билан қандайдур ишларни бажариши (масалан бэкап қилиши) мумкин. Шундай бу .bat файл нисбатан универсалроқ .bat файлга айланади. Агар параметрлар кўп бўлса, улар бир биридан пробел ёрдамида ажратилади. Мисол учун, 3.bat деган файл тузамиз ва унга қуйидаги кодни киритамиз:
@echo birinchi parameter - %1
@echo ikkinchi parameter - %2

3.bat файлини консольдан қуйидагича чақирамиз:
3.bat бир икки
Яъни, унинг биринчи параметри - бир, иккинчи параметри эса - икки.
Натижа қуйидагича бўлади:


Дастурларни алохида жараёнда ишлатиш
Дастурларни алохида жараёнда, алохида ойнада ишлатиб юбориш учун, start ва call буйруқлари ишлатилади. Буни текшириш учун 4.bat файлини тузамиз ва унга қуйидаги кодни ёзамиз:
@start cmd.exe

Консольдан 4.bat ни ёқиб юборамиз:

Кўриб турганимиздек, янги ойнада cmd.exe яъни консоль дастури ишлаб кетди. Бирон бир дастур start буйруғи орқали чақирилса, ёқиб юборилган дастур уни ёқувчи дастурдан алохида ёқилган бўлади. Яъни, ёқилган дастур уни ёқиб юборган жараёндан мустақил бўлади. Биринчи дастур иккинчи дастурини ишлашини кутиб туриши, яъни ёқиб юборилаятган дастур, уни ёқувчи дастур (жараён)га муте бўлиши учун call буйруғи ишлатилади. 5.bat файлини тузамиз ва унга қуйидаги кодни ёзамиз:

@call cmd.exe

Консольдан 5.bat ни ишлатамиз ва натижада аввалги консольни ичида янги консоль ишлаб кетади. Юқорига ва пастга тугмачаларини босиб
кўрсангиз хам, аввалги консольда берилган буйруқлар очилмайди. Аслида, янги консоль бошқа ойнада эмас, балки хозирги ишлаб турган ойнада очилди.

Бу "янги" коснольни ёпишлик учун exit буйруғи берилади:

Шунда биз яна (аввалги) асосий консольга қайтамиз. Юқорига ва пастга тугмаларни боссангиз, аввалги берган буйруқлар хам қайтиб келади.

pause буйруғи берилганда дастурни ишлаши тўхтатиб турилади ва давом этишлик учун бирон бир клавишани босишлик талаб этилади.
Янги 6.bat файлини тузиб унга:
@echo bu oltinchi misol
@pause

кодни ёзиб қўйинг:

Консольдан 6.bat ни ишлатиб юборинг:


Ўзгарувчилар билан ишлаш
.bat файли ичида ўзгарувчиларни эълон қилиб, уларни қийматини белгилаш мумкин. Бунинг учун set буйруғи ишлатилади. Ўзгарувчига мурожаат қилишлик учун эса унинг номи фоиз белгилари ичига олиб ёзилади - %uzgaruvchi%.
Янги 7.bat файлини тузиб унга қуйидаги текстни киритинг:
@set ism=Farhod
@echo sizning ismingiz - %ism%

7.bat файлини консольдан ишлатиб юборинг. Натижа:

Агарда каттароқ .bat файл устида ишлаятган бўлсангиз, хар бир қатор бошига @ белгисини қўйишлик ноқулай бўалди. Бундан қутулишлик учун
файлни энг биринчи қаторига @echo off буйруғи ёзиб қўйилса, хар бир буйруқ бошига @ ёзишликдан қутуламиз.
goto буйруғи ёрдамида .bat файлни бажарилиши, берилган белгига ўтилади. .bat файли ичидаги белгилар : (икки нуқта) билан бошланади.
8.bat файлини тузинг ва унга қуйидаги текстни ёзинг:
@echo off
IF [%1]==[] goto Chiqish
set parametr=%1
if %parametr%==tozala goto Tozala
goto Chiqish
:Tozala
cls
:Chiqish

Бу код ёрдамида аввало биз дастура берилган параметр бўшлиққа текширилмоқда. Агарда бизни .bat файл бирорта хам параметрсиз чақирилса, дастурни бажарилиши Chiqish белгисига ўтилади ва табиийки хеч нарса бажарилмайди. Агарда дастурни параметри бўш бўлмаса, унинг қиймати parameter ўзгарувчисига берилади. Ундан кейин if блокида parameter ўзгарувчисини қиймати текширилмоқда. Агарда у tozala га тенг бўлса, дастурни бажарилиши Tozala белгисига ўтади. У блокда эса cls буйруғи ёзилган, яъни консоль тозаланади. Агарда дастурга берилган параметр  tozala га тенг бўлмаса дастурни бажарили яна Chiqish белгисига боради ва дастур ўз ишини тугатади.

For цикли
For цикли ёрдамида бир ишни бир неча маротаба, шарт бажарилгунга қадар бажариш мумкин. Қуйидаги мисолда, папкадаги барча текст файларини номи консольга чиқарилади. D: дискда mevazor папкасини тузинг ва уни ичида бир қанча текст файлларини тузинг. Шундан сўнг,
8.bat файлини тузиб, унга қуйидаги кодни киритинг:
@echo off
set "folder=d:\mevazor"
for %%F in ("%folder%\*.txt") do (
@echo %%F
)

Натижада консольга mevazor папкасидаги барча текст файллар кўрсатилади.

Фарход Дадажонов

Manba: http://virtualdars.uz

Share