Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

3. díl - Proměnné a matematické operace v Batchi

Ostatní jazyky Příkazový řádek a dávkové soubory Proměnné a matematické operace v Batchi

Unicorn College ONEbit hosting Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Z minulého tutoriálu umíme kromě změny barviček vypisovat text. No jo, ale to nám skoro k ničemu není. Co by to bylo za program, pokud by pořád jen něco vykládal? V tomto tutoriálu se naučíme vytvářet proměnné.

Proměnné

Pojďme se shodnout na tom, co je to proměnná (programátoři mi teď jistě odpustí zbytečné vysvětlování). Určitě znáte z matematiky proměnnou (např. x), do které jsme si mohli uložit nějakou hodnotu, nejčastěji číslo. Proměnná je v informatice naprosto to samé - je to místo v paměti počítače, kam si můžeme uložit nějaká data (jméno uživatele, aktuální čas nebo poloměr kruhu pro výpočet jeho obsahu). Toto místo má podle typu proměnné také vyhrazenou určitou velikost, kterou proměnná nesmí přesáhnout.

Proměnná má vždy nějaký datový typ, může to být číslo, znak, text a podobně, záleží na tom, k čemu ji chceme používat. Většinou musíme před prací s proměnnou tuto proměnnou nejdříve tzv. deklarovat, čili říci jazyku jak se bude jmenovat. Jazyk ji v paměti založí a teprve potom s ní můžeme pracovat.

Program vypisující proměnnou

Založte si nový program, který se bude jmenovat vypis.bat. Vložíme do něj základní strukturu a titulek nastavíme na „Vypis promenne“.

@echo off
title Vypis promenne

pause

Kód budeme nyní psát do mezery mezi title a pause. Proměnnou můžeme vytvořit pomocí příkazu set. Přidejme následující kód.

set web=ITnetwork.cz
set autor=193

Dobrá, proměnnou bychom měli vytvořenou. Pokud program spustíme, na první pohled se nic nebude dít. Chtělo by to něco, kde proměnnou vypíšeme. Proměnnou lze vypsat pomocí, nám již známého, příkazu echo - jen před a za název proměnné přidáme znak procenta. Pod řádek s nastavením proměnné vložte tento řádek.

echo Zdroj informaci %web%, autor clanku %web%/portfolio/%autor%

Pokud nyní program spustíte, vypíše nám odkaz na web Itnetwork a odkaz na mé portfolio.

Výpis proměnné v Batch

Ale pro uživatele to pořád není nic zajímavého, pořád vidí pouze výstup. Pojďme si vytvořit nový program, který bude zpracovávat vstup od uživatele.

Program Papoušek

Napíšeme program papoušek, který bude dvakrát opakovat to, co uživatel napsal. Založte si soubor s názvem papousek.bat a vložte do něj základní strukturu. Načíst vstup od uživatele můžeme pomocí opět pomocí příkazu set. Tentokrát k němu ale přidáme přepínač /p. Za rovnítko můžeme vložit nějaký text, který se zobrazí u vstupu. Není to ale povinné.

Nejprve se uživateli, jako každý slušný papoušek, představíme a poté požádáme, aby něco napsal.

echo Ahoj, jsem virtualni papousek Lora, rad opakuji!
set /p opakuj=Napis mi neco:
echo.

Dobrá, nyní máme v proměnné načtenou hodnotu od uživatele. Jelikož vytváříme program, který má opakovat, musíme také napsat nějaký výstup.

echo %opakuj%, %opakuj%!

Na konec ještě vložíme příkaz pause se skrytým textem, aby si uživatel mohl prohlédnout výstup. Program uložíme a spustíme.

Papoušek v Batchi

Program Zdvojnásobovač

Vytvoříme program, který si od uživatele vytáhne číslo a vypíše mu jeho dvojnásobek. Počítání v Batchi probíhá opět pomocí příkazu set, ale tentokrát s přepínačem /A. Založíme si nový soubor, který pojmenujeme dvojnasobek.bat a vložíme do něj základní strukturu. Poté si načteme číslo do proměnné %cislo% a v proměnné %vysledek% jej zdvojnásobíme. Nakonec uživateli vypíšeme výsledek.

set /p cislo=Zadej cislo:
set /a vysledek=%cislo%*2
echo Dvojnasobek je %vysledek%

Program si uložte a zkuste jej spustit. Program je také „blbuvzdorný“. Zkuste si do vstupu napsat nějaké slovo nebo písmeno – program vypíše nulu :-).

Zdvojnásobovač v Batchi

Jednoduchá kalkulačka

Takže počítat již umíme. Co kdybychom si vytvořili jednoduchou kalkulačku v Batchi? Bude opravdu velmi jednoduchá. Na vstupu dostaneme dvě čísla, program poté vypíše výsledky jejich součtu, rozdílu, součinu a podílu. Založte si nový soubor s názvem kalkulacka.bat, do kterého vložíte základní strukturu.

Nejprve uživateli představíme aplikaci, poté si vyžádáme obě čísla.

echo Vitej v kalkulacce. Kdyz mi zadas 2 cisla, spocitam ti spoustu věci!
set /p prvni=Zadej prvni cislo:
set /p druhe=Zadej druhe cislo:
echo.
echo Dekuji za zadani cisel. :-)

Dále si vytvoříme proměnné, do kterých budeme ukládat výsledky jednotlivých operací.

set /a soucet=%prvni%+%druhe%
set /a rozdil=%prvni%-%druhe%
set /a soucin=%prvni%*%druhe%
set /a podil =%prvni%/%druhe%

Výborně, nyní máme výsledky operací uložené v proměnných. Nesmíme zapomenout na tu nejdůležitější věc – vypsat je uživateli.

echo.
echo %prvni%+%druhe% je %soucet%
echo %prvni%-%druhe% je %rozdil%
echo %prvni%*%druhe% je %soucin%
echo %prvni%/%druhe% je %podil%

Systémové proměnné

Systém nám již připravil nějaké proměnné. Většinou obsahují informace o počítači, systému a aktuálním uživateli. Jejich seznam můžeme najít, když do příkazového řádku zadáme příkaz „set“. Mezi nejzajímavější proměnné patří například:

Popis Proměnná Příklad výstupu
Aktuální datum %date% út 17. 02. 2015
Aktuální čas %time% 14:28:12,53
Uživatelské jméno aktuálního uživatele %username% Daniel
Jméno počítače %computername% MujPc
Náhodné číslo od 0 do 32 767 %random% 7030
Složka Windows %windir% C:\WINDOWS
Složka uživatele %userprofile% C:\Users\Daniel
AppData %appdata% C:\Users\Dani­el\AppData\Ro­aming
Program Files %programfiles% C:\Program Files
Domovský oddíl %homedrive% C:
Architektura procesoru %processor_ar­chitecture% AMD64

Jak jsem již zmínil, tyto proměnné nám připravuje systém. Jelikož je příkazový řádek propojený s operačním systémem, je možné změnit výchozí hodnoty těchto proměnných, případně si přidat vlastní globální proměnné. Zkuste si otevřít Ovládací Panely > Systém > (levé menu) Upřesnit nastavení systému > (záložka) Upřesnit > (tlačítko dole) Proměnné prostředí. Zde lze proměnné upravit, vymazat, případně si vytvořit vlastní.

Proměnné prostředí v Batch

 

Stáhnout

Staženo 149x (999 B)
Aplikace je včetně zdrojových kódů v jazyce Batch

 

 

Článek pro vás napsal Daniel Vítek
Avatar
Jak se ti líbí článek?
16 hlasů
Primárně PHP programátor, rád si hraje s Arduinem a píše články do sekce Batch.
Miniatura
Všechny články v sekci
Příkazový řádek a dávkové soubory
Miniatura
Následující článek
Cvičení k 3. lekci Batche
Aktivity (1)

 

 

Komentáře
Zobrazit starší komentáře (13)

Avatar
Jan Šenbauer:11.12.2016 2:14

děkuju moc :) právě se tohle učíme ve škole a náš učitel mi za celý týden učení nedokázal pomoct jako ty tady za 2 hodiny :) ještě si přečtu a vyzkouším další z tvých návodů a při testu dostanu konečně za jedan :p aspoň doufám

 
Odpovědět 11.12.2016 2:14
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Jan Šenbauer
Daniel Vítek:11.12.2016 18:27

Díky moc! :) Měl bych ten seriál konečně dopsat :)

 
Odpovědět 11.12.2016 18:27
Avatar
Niko Nikola Makarius:7. února 21:13

Ahoj mám dotaz, v čem jsem udělal chybu? Snažil jsem se podle článku o jednoduché kalkulačce, vytvořit "chytřejší" kalkulačku, ale teď jsem se v tom ztratil a nevím jak dál.
Mám to takhle, ale fakt nevím jestli je to dobře.

echo off
color 02
start
echo Hello. Welcome to your own calculator.
set /p first=First number
set /p character=character
set /p second=Second number
echo.
echo Thanks and give me a minute.
set a/ soucet=+
set a/ rozdil=-
set a/ soucin=*
set a/ podil=/
echo.
echo if %soucet% set /p %first%+%second%
echo if %rozdil% set /p %first%-%second%
echo if %soucin% set /p %first%*%second%
echo if %podil% set /p %first%/%second%
go to start

díky moc... vždy mě to pustí jen do zadání čísel a znaku. Řekl bych, že bude chyba někde na konci, ale fakt nevim

 
Odpovědět 7. února 21:13
Avatar
nalimleinad
Člen
Avatar
Odpovídá na Niko Nikola Makarius
nalimleinad:7. února 21:35

Moc s batchem nedělám, ale

  1. "go to" není "goto"
  2. co jsem lehce googlil, tak by to vracení na začátek, popř. do určité části kódu mělo vypadat nějak takto:
echo off
color 02
:start
echo Hello. Welcome to your own calculator.
set /p first=First number
set /p character=character
set /p second=Second number
echo.
echo Thanks and give me a minute.
set a/ soucet=+
set a/ rozdil=-
set a/ soucin=*
set a/ podil=/
echo.
echo if %soucet% set /p %first%+%second%
echo if %rozdil% set /p %first%-%second%
echo if %soucin% set /p %first%*%second%
echo if %podil% set /p %first%/%second%
goto:start

Jinak mi to při prvotním "startu" vždy otevřelo nový příkazový řádek.

 
Odpovědět 7. února 21:35
Avatar
nalimleinad
Člen
Avatar
Odpovídá na Niko Nikola Makarius
nalimleinad:7. února 21:46

Jako další věc, které jsem si všimnul mi přijde divné "echo if", pokud vím, tak podmínky primárně slouží na způsob "if něco do něco", tzn. ve tvém případě
if %soucet% set /p %first%+%second%
popř.
if %soucet% echo %first%+%second%

Ale i tak mi ten tvůj kód moc potom nedává smysl. Zkus hlouběji popsat, čeho jsi chtěl docílt.

 
Odpovědět 7. února 21:46
Avatar
Odpovídá na nalimleinad
Niko Nikola Makarius:8. února 15:58

Předem bych chtěl poděkovat za snahu pomoct mi. Šlo mi o vytvoření lepší kalkulačky, která by uměla rozeznat operace (+,-,*,/) a podle nich dát výsledek, aby nedávala na dvě čísla všechny výpočty. Bohužel jakmile zadám čísla a znak a dám pokračovat, ihned se vypne.

 
Odpovědět 8. února 15:58
Avatar
Odpovídá na Niko Nikola Makarius
Petr Čech (czubehead):8. února 16:20

No a máš na konci pause?

Odpovědět 8. února 16:20
Why so serious? -Joker
Avatar
 
Odpovědět 8. února 17:12
Avatar
Odpovídá na Niko Nikola Makarius
Tomáš Pařízek:15. května 20:26

Toto je správný kód:

@echo off
color 02
echo Hello. Welcome to your own calculator.
set /p first=First number
set /p character=character
set /p second=Second number
echo.
echo Thanks and give me a minute.
set soucet=+
set rozdil=-
set soucin=*
set podil=/
echo.
if %soucet%==%character% ( set /p %first%+%second% )
if %rozdil%==%character% ( set /p %first%-%second% )
if %soucin%==%character% ( set /p %first%*%second% )
if %podil%==%character% ( set /p %first%/%second% )
goto start
 
Odpovědět 15. května 20:26
Avatar
Michal Huff
Člen
Avatar
Michal Huff:17. května 17:03

Mohlo by to fungovat takhle:

:zacatek
@echo off
call config.bat ::"zavolá" config.bat
:nastaveni
set /p barva=Zadej barvu (např.: 1C):
echo >config.bat color %barva% ::uloží do souboru nastavení barvy, barva se před uložením sama nahradí vstupem uživatele
goto zacatek ::vrátí se na začátek a uplatní nastavení

Dva tipy :

  • v batchi jsou komentáře místo // uvozeny :: nebo rem
  • kód můžeš vkládat pomocí toho tlačítka navrchu, je to tak přehlednějsí :)
Odpovědět 17. května 17:03
Než položím hloupou otázku, použiji google.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 23. Zobrazit vše