460 likes | 699 Views
Ú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.
E N D
Ú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 • 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
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í.
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 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 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 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 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ů.
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 ,
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