CMD VI
CYKLY
Určite ste neikedy potrebovali urobiť rovnakú činosť viacnásobne . Doteraz bol jediny spôsob :
- @echo off
- echo Hello
- echo Hello
- echo Hello
- echo Hello
- pause
Totot je strašne nepraktické a zabera to množstvo priestoru . Nehovoriac o probleme pri zložitejších príkazoch.
GOTO
Príkaz goto odkazuje na ake meisto v programe sa ma skript presunúť . Toto miesto (label) si musime pomenovať a až potom naň nasmerovať prikaz gotot . Nechápete ? Tu je maly priklad
- @echo off
- echo Začiatok skriptu
- goto end
- rem táto časť sa nikdy nevykoná , pretože ju prikaz goto preskočí
- echo Hello
- :end
- echo koniec skriptu
- pause
Návestie definujeme pomocou dvojbodky a našeho názvu navestia , napr. :ahoj , :end alebo :loop
Keď je n=avestie definovane , môže naň príkaz goto skočiť . V našom skripte sa kvôli tomu nevykoná echo Hello , pretože ho prikaz goto preskočí.
Samozrjeme , navestie nemusí byť len za prikazom goto ale aj pred príkazom
- @echo off
- :loop
- echo hello world
- goto loop
Skript nám bude vypisovať donekonečna na novy riadok Hello world
A ako toto premeniť na cyklus ? Použitím IF ... ELSE a premennej :
- @echo off
- set cislo=0
- :loop
- echo Hello world
- set /a cislo +=1
- if %a% == 5 (goto end)
- goto loop
- :end
- pause
Vypíšeme si fungovanie
set cislo = 0 - vytvoríme premennu , ktoru použijeme v cykle
set /a cislo +=1 - toto je skratený zápis . Môžete použiť aj set /a cislo=cislo+1 . Úlohou tohto prikazu je pri každom cykle pripočítať jednotku
if %a% == 5 (goto end) - ak sa premenna a rovna 5 , tak skoč na navestie :end , inými slovami , ak sa cyklus vykoná 5-krát , tak nech skončí
goto loop - prikaz , ktory zariadí , že sa cyklus bude vykonávať. ak premenna dosiahne hodnotu 5 , tak prikaz goto tento prikaz preskočí a cyklus sa už nezopakuje
Výsledkom tohto skriptu je vypísanie Hello world 5krát po sebe
FOR
FOR je príkaz na tvorbu cyklov . Tento príkaz používame , ked vieme , kolkokrat sa ma cyklus vykonať
Ako vyzerá tento prikaz v praxi ?
- @echo off
- for %%i in (0,1,2,3,4,5,6,7,8,9) do (echo hello world)
- pause
No krása . AK by sme potrabovali urobiť 1000 cyklov , tak by ten skript mal velkosť tak 10 megabajtov . Naštastie existuje prepinaš /L , ktory to zlachčuje:
- @echo off
- for /L %%i (0,1,9) do (echo hello world)
- pause
Vďaka prepinaču sa nám príkaz skrátil . Prve číslo je začiatočná hodnota (0), druhé o kolko sa bude premenna %%i zvetšovať (po každom cykle sa i zvetší o 1) , tretie tvorí koncovú hodnotu (ak sa bude i =9 , cyklus sa už nezopakuje). Namiesto čisiel môžeme použiť aj premennu:
- @echo off
- set /p cyklus=zadajte čislo
- for /L %%i (0,1,%cyklus%) do (echo hello world)
- pause
Ak zadáte napr čislo 5 , vypíše sa hello world 5 krát.
Tu sa tiež stretávame z premennou for ckylu . Táto premenna musi mať v príkaze dve percenta (viď. %%i) , ale ak ju chceme použivať , píšeme ju normálne (tj %i%)
CMD VII - práca zo súbormi