Proměnné a jejich užití v dávkách

Hurá! Úspěšně jsme se prokousali k dávkám. Dávka by se dala specifikovat jako sled jednotlivých příkazů DOSu, které společně tvoří celek, který má za úkol provést určitý sled úloh nebo jenom jednu úlohu. Nejjednodušší dávky jsou vlastně jenom několik příkazů jdoucích za sebou uložených v souboru s příponou BAT. Ty složitější už obsahují podmínky a návěstí, takže psaní dávek by se dalo přirovnat k jednoduchému programovacímu jazyku.

Jak a v čem tvořit dávky?

Teď budu předpokládat, že dávky už umíte a že jenom chcete, aby šli spustit. Nejjednodušším způsobem jak vytvořit dávku je napsat ji v Notepadu nebo v jiném textovém editoru (bez formátovacích znaků) a uložit soubor s příponou .bat Radši to ještě trochu upřesním. Pokud budete chtít vytvořit dávku v poznámkovém bloku zvolte možnost Soubor -> Uložit -> Uložit jako typ: Všechny soubory -> Název souboru: neco.bat. Kódování a ostatní možnosti můžete ponechat. Další možností, kde tvořit dávky jsou různé programátorské editory, které dokáží zvýraznit syntax dávkových souborů. Jedním takovým je například CodePad.

Proměnné

Proměnná je pojmenované místo v paměti, které může uchovávat určitou informaci (číslo, řetězec) se kterou pak můžeme dále pracovat. Před a za každou DOSovskou proměnnou musí být znak %. Zde je jednoduchý příklad dávky, která pouze vypíše na obrazovku “Ahoj” a počká na stisk klávesy.

@echo off
set pozdrav=Ahoj
echo %pozdrav%
pause

Deklarace proměnné

Proměnná se deklaruje příkazem SET. Tento příkaz je něco jako var v JavaScriptu. Nejdříve napíšete SET, následuje název proměnné, rovnítko a nakonec hodnota. Hodnota může být číslo, řetězec a nebo rovněž proměnná. Existují proměnné, které si nastavuje sám cmd (repektive Windows). Seznam těchto proměnných získáte příkazem SET bez parametrůe. Pokud umíte trochu anglicky, tak z názvu zjistíte, co která proměnná dělá.

%cd% Vypíše cestu k aktuální složce.
%date% Obsahuje aktuální datum.
%time% aktuální čas
%random% Vygeneruje náhodné číslo.
%username% Obsahuje jméno přihlášeného uživatele.
%windir%, %temp% První obsahuje cestu k instalaci Windows což se dá snadno zneužít a druhá obsahuje cestu k adresáři temp.
%path% Obsahuje složky, které se prohledávají po zadání příkazu.

Číselné operace s proměnnými

Pomocí dávek můžete velké množství číselných operací. Zde jsou operace s operátory:

  1. + (plus)
  2. – (mínus)
  3. /(děleno)
  4. * (násob)
  5. % (modulo – zbytek po dělení)
  6. ^ (XOR)
  7. | (OR)
  8. & (AND)
  9. << (bitový posun vlevo)
  10. >> (bitový posun vpravo)

Vždy, když budete dělat nějaké početní operace tak musíte dát o nich příkazovému řádku vědět napsáním příkazu set /a. Dále doporučuji dát celý početní výraz do uvozovek.

REM a = 2; b = 10
set /a "c=a+b"    výsledek je 12
set /a "c=a-b"    výsledek je -8
set /a "c=a*b"    výsledek je 20
set /a "c=(a+b*10)*(13+b)"   výsledek je 2346

Textové operace s proměnnými

Možná vás napadla otázka: “Když můžu do proměnných dávat řetězce tak s nima taky musí umět cmd pracovat?” Samozřejmě, že máte pravdu. Nejlépe se to vysvětlí na příkladu. Mám slovo: LOKOMOTIVA. Toto slovo je v proměnné %slovo%.

Příkaz Funkce Výsledek
%slovo:~2% Přeskočí první dva znaky KOMOTIVA
%slovo:~-6% Bude použito posledních šest znaků MOTIVA
%slovo:~0,-2% Nebudou použity poslední dva znaky. LOKOMOTI
%slovo:O=a% Všechny písmena O budou nahrazeny a. LaKaMaTIVA
%slovo:O=% Všechny písmena O budou vypuštěna LKMTIVA