Komentář dávky, příkazy call a at

Komentář dávky

Jedinou možností, jak napsat v dávce komentář je příkaz REM. Tento postup je nepohodlný a nepružný, ale bohužel dávkové soubory jiný způsob nenabízejí. S příkazem REM musíte nakládat jako s normálním příkazem (úplně stejně jako s příkazem echo), tzn. že ho budete muset psát na zvláštní řádek. Příkaz REM se snažím užívat co nejméně, protože jeho používáním docílím jedině chauzu v dávce. Jeho využití je snad jedině v poznámkách v záhlaví nebo u komplikovaných operacích.

@echo off
REM ----------------------------------------------------------
REM Autor: Michal Blažek
REM Název: mujweb.cz/www/dosms
REM Činnost programu: snaha naučit uživatele s DOSem
REM ----------------------------------------------------------
pause

Příkaz call

Příkaz call volá dávku. Vysvětlení je následující: Představte si, že jste naprogramovali dávku, která má obrovskou velikost (pojmenuji jí davka.bat) a naprogramovali jste další dávku, jejíž funkce je založena na “davka.bat”. Uděláte to, že zkopírujete “davka.bat” s obrovsku velikostí do té menší a vznikne vám gigantická. A teď chcete vytvořit další dávku, která opět využívá dávku “davka.bat” a když ji tam opět nakopírujete, tak vám vzniknou dvě gigantické dávky, které mají skoro stejný obsah (lépe řečeno obě v sobě mají nakopírovanou dávku “davka.bat”). A pro tyto účely právě existuje příkaz call. Pro ty co nepochopili, co jsem se tu snažil názorně vysvětlit to teď zkusím říci po lopatě. Příkaz call spouští dávku, ke které jsme zadali cestu. Pokud patříte mezi typ lidí, kterým se říká hračičkové, tak vás jistě potěší následující příklad a určitě ho budete dále rozvíjet. Příklad, který zde chci ukázat počká na stisk klávesy (1-3) a podle odpovídající klávesy vykoná příkaz a dávka se ukončí pokud stisknete klávesu 9 (tato dávka v podstatě vytváří DOS založený na DOSu). Příkaz 1 je jednoduchý dir, příkaz 2 je ver a příkaz 3 je zpráva echo obsahující aktuální datum a čas.

@echo off
REM ------------------------------------------------------------
REM Autor: Michal Blažek
REM Název: dosnadosu.bat
REM Činnost programu: Program počká na stisk klávesy 1-3 a následně ENTER
REM  a vykonná odpovídající příkaz. Program ukončíte klávesou 9
REM ------------------------------------------------------------
set prikaz1=1
set prikaz2=2
set prikaz3=3
set prikaz4=9

echo Napoveda:
echo 1 - Vypise obsah aktualni slozky
echo 2 - Vypise verzi systemu Windows
echo 3 - Vypise aktualni datum a cas
echo 9 - Ukonci program

set /p cti=DOS:
REM *** Přepínač /p znamená, že se bude číst z obrazovky **

if %cti% EQU %prikaz1% (call prikaz1.bat) else (goto dalsi1)

:dalsi1
if %cti% EQU %prikaz2% (call prikaz2.bat) else (goto dalsi2)

:dalsi2
if %cti% EQU %prikaz3% (call prikaz3.bat) else (goto konec)

:konec
 echo Preji prijemny den 🙂
 pause

at

Příkaz at je normálním příkazem DOSu a nepatří do kategorie if, else, goto, … AT naplánuje provedení příkazu nebo dávky. Příkaz AT bez parametrů vypíše seznam naplánovaných úloh. Několik příkladů:

at 15:00 smaz.bat V 15:00 zavolá dávku smaz.bat a vymaže sama sebe ze seznamu naplánovaných úloh. Dávka proběhne na pozadí a vzhledem k rychlosti prováděných dávek si jí uživatel ani nevšimne.
at 15:00 every:po smaz.bat Dávka se vykonná každé pondělí v 15:00.