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


E-MAIL : script-net(ZAVINÁČ)centrum.sk
Vytvorené službou Webnode
Vytvorte si webové stránky zdarma! Táto stránka bola vytvorená pomocou služby Webnode. Vytvorte si vlastný web zdarma ešte dnes! Vytvoriť stránky