Úvod do programování Malá kouzla s příkazovým řádkem Jednoduché dávkové soubory Jitka Kalná, 2009
Spuštění příkazového řádku Start – Spustit – zadat příkaz cmd
Důležité pojmy Absolutní cesta Relativní cesta Pracovní adresář Wildcards (tzv. zástupné znaky) ? *
Základní příkazy příkaz /? – výpis nápovědy k zadanému příkazu dir cd např. date /? dir cd : (dvojtečka) date, time date /t, time /t cls echo
Základní příkazy příkaz /? – výpis nápovědy k zadanému příkazu např. date /? dir – vypíše obsah pracovního adresáře cd – změna aktuálního adresáře např. cd .., cd moje, cd ..\testy : (dvojtečka) – změna disku např. H:, C: date, time – vypíše systémový datum nebo čas (a umožní ho změnit, pokud má uživatel práva) date /t, time /t – pouze výpis data nebo času bez možnosti změny cls – vymazání obrazovky echo – výpis zprávy na obrazovku
Dávka (dávkový soubor) Obyčejný textový soubor, který obsahuje na jednotlivých řádcích příkazy tak, jako by je postupně zadával uživatel Je provedený celý najednou Přípona: bat Možnost vytvoření v editoru v Příkazovém řádku: Spuštění editoru: příkaz edit
Dávka dnes.bat – zadání Vytvoření dávky, která vymaže obrazovku (cls), vypíše nápis „Dnes je“ (echo) a napíše aktuální datum a čas bez možnosti změny (date /t, time /t) Nejprve vyzkoušet napsat jednotlivé příkazy bez použití dávky Vytvořit v editoru dávku Uložit dávku pod názvem dnes.bat Pokusit se dávku spustit (do příkazového řádku napsat dnes.bat)
Dávka dnes.bat – první pokus davka.bat po spuštění výpis jednotlivých příkazů, které se provádějí řešení: použití příkazu @echo off – zrušení výpisu na obrazovku na začátku a ve chvíli, kdy potřebujeme výstup na obrazovku použijeme příkaz echo
Dávka dnes.bat – druhý pokus
Příkaz goto – přechod na návěstí Při zpracování příkazů přechází Příkazový řádek vždy na následující řádek. Někdy může být výhodné označit některá místa pomocí návěstí a na tato místa potom přecházet Návěstí je libovolná max. osmiznaková kombinace, před kterou je dvojtečka např. :navesti
Příkaz goto – příklad pozn.: příkaz REM slouží ke psaní komentářů – vhodné svoje programy komentovat, aby se tvůrce ve svém díle vyznal i za čas
Práce s proměnnými Proměnné často obsahují číslo, hodí se aritmetické operace. Výpočet proběhne při použití příkazu set /a Syntaxe: set /a “x=a+b” Proměnná x se naplní součtem a+b (za předpokladu, že někde výše v dávce byly proměnné a, b definovány) Výpis proměnné na monitor Syntaxe: echo %x% Aritmetické operace: +, -, *, / (celočíselné dělení), % (zbytek po dělení)
Vstup uživatele do dávky Hodnoty proměnných lze zadávat i z klávesnice v průběhu dávky. Příkaz: set /p promenna=vyzva Uživatel bude vyzván k zadání proměnné zobrazením textu vyzva Např.: set /p x=Zadej cislo:
Dávka scitani1.bat Dávka sečte dvě čísla, která uživatel zadá z klávesnice, výsledek zobrazí.
Dávka scitani1.bat
Příkaz if – podmíněné zpracování příkazu a Příkaz else – rozšíření příkazu if větvení programu na základě splnění (nesplnění) nějaké podmínky příkaz uvedený za else bude vykonán pouze za předpokladu, že podmínka nebyla splněna Příklad: if %q%==a (echo ahoj) else (echo nazdar) – zde se v podmínce porovnávají dva řetězce (pomocí ==)
Příkaz else POZOR: příkaz else MUSÍ být uveden na stejném řádku jako je podmínka pro if vyřešeno pomocí závorky Porovnání dvou číselných proměnných. Pokud se rovnají, provede se příkaz za if, v opačném případě se provede příkaz za else.
Dávka scitani2.bat Využijte dávku scitani1.bat Po sečtení čísel se zobrazí dotaz, zda uživatel chce skončit (a/n) a – dávka se spustí od začátku – nové zadání n – dávka bude ukončena Nápověda: použijte další proměnnou, kterou pomocí if otestujete. Pokud bude naplněna hodnotou a, pak pomocí goto a návěstí návrat zpět na začátek. Při naplnění jinou hodnotou, dávka skončí.
Dávka scitani2.bat – výstup
Dávka scitani2.bat – zdrojový kód
Dávka hadani.bat vygeneruje náhodné číslo od 0 do 9 uživatel náhodně jedno číslo hádá program vypíše, zda uživatel uhádl a vygenerované číslo vypíše proměnná %random% – obsahuje náhodné číslo z intervalu 0 až 32767 set /a s1= %random% – proměnná s1 bude naplněna náhodně vygenerovaným číslem set /p s2=Zadej cislo – proměnná s2 bude naplněna z klávesnice echo %s2% – výpis proměnné s2 if %s1% EQU %s2% – jestliže se rovná (čísla)
Dávka hadani.bat – výstup
Dávka hadani.bat – zdrojový kód
Dávka hadani2.bat – výstup Rozdíl proti hadani.bat: Dotaz na ukončení programu
Dávka hadani2.bat – zdrojový kód Poznámka: Porovnání proměnných s číslem a řetězcem.
for – příkaz cyklu syntaxe: for /L %%j in (začátek,krok,konec) do příkaz proměnná j se postupně bude plnit od čísla začátek po kroku do čísla konec parametr /L může být i malé písmeno (pozor na záměnu) Poznámka 1: ve své základní podobě slouží příkaz for k práci s množinou souborů Poznámka 2: pokud příkaz for použijeme uvnitř dávky je nutné řídící proměnnou VŽDY uvozovat dvěma procenty
Dávka for.bat – zdrojový kód
Dávka for.bat – výstup
Dávka prumer.bat – výstup Dávka pro výpočet aritmetického průměru zadaného počtu celých čísel
Dávka prumer.bat Použití triku: aritmetika Příkazového řádku je celočíselná, ve výpočtu je použit trik: součet je před dělením vynásoben stem a je tedy 100x větší, tzn., že poslední dvě cifry jsou setinami výsledku Výpis výsledku: %prum:~0,-2% zobrazí výsledek bez posledních dvou cifer následuje desetinná čárka %prum:~-2% zobrazí poslední dvě cifry (setiny)
Dávka prumer.bat – zdrojový kód
Dávka scitani3.bat – výstup Uživatel sčítá příklady, na konci dávky se zobrazí počet správně a špatně spočítaných příkladů.
Dávka scitani3.bat – zdrojový kód
for /f – zpracování a analýza souboru příkaz for /f lze použít ke zpracování textového souboru, tento soubor je vstup cyklu v každém kroku cyklu bude zpracován jeden řádek souboru, který je rozdělen na sloupce (oddělovač sloupců lze nadefinovat, např. ,;) proměnné nadefinované v příkazu for je předán text prvního sloupce, další proměnné v abecedě je předán další sloupec, atd. prázdné řádky jsou ignorovány
for /f – zpracování a analýza souboru za parametrem /f může být uvedeno následující: eol=x – za konec řádku je považován i znak x (cokoliv za x bude ignorováno, např. i celý řádek) skip=n – vynechá prvních n řádků souboru delims=x – za x může být dosazen oddělovač sloupců, např. delims=; tokens=a,b,c – čísla sloupců, které mají být zpracovány
for /f – zpracování a analýza souboru příklad: for /f “eol=# delims=, tokens=1,4,5” %%A in (soubor.txt) do konec řádku je # – cokoliv za tímto znakem je ignorováno oddělovačem je čárka (,) zpracován bude sloupec 1, 4, 5 obsah prvního sloupce se uloží do proměnné %%A, obsah čtvrtého sloupce do proměnné %%B, atd. podle abecedy
Dávka soubor1.bat – vstupní soubor Soubor data.txt, který slouží jako vstup do cyklu Oddělovačem je středník ;
Dávka soubor1.bat – výstup Zpracovává se 1. a 3. sloupec, ty se i vypisují Zároveň se do proměnné počítá i celkový plat
Dávka soubor1.bat – zdrojový kód červená šipka: výpis prázdného řádku do proměnné plat se počítá celkový plat # konec řádku – vše za # se ignoruje zpracovává se 1. a 3. sloupec
Dávka soubor2.bat – výstup Upravte předchozí soubor tak, aby se vypisovalo i město Ve vstupním souboru nadefinujte jako oddělovač čárku ,
Dávka soubor2.bat – vstupní soubor Soubor data2.txt, který slouží jako vstup do cyklu Oddělovačem je ,
Dávka soubor2.bat – zdrojový kód
Systémové proměnné systprom.bat – výstup
Systémové proměnné systprom.bat – zdrojový kód Klávesová zkratka pro podtržítko: L Alt + 95
Soubor docasne.bat Napište dávkový soubor, který najde všechny dočasné soubory na disku C: (mají příponu .tmp nebo ve svém názvu mají podřetězec tmp nebo temp a nebo jsou v adresáři tmp nebo temp), seznam uloží do souboru docasne.txt.
Soubor docasne.bat – zdrojový kód Po spuštění souboru je třeba mít chvilku trpělivost – výsledek není hned