Dávkový soubor

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Tento článek pojednává o skriptech v systémech DOS, OS/2 a Windows. O jiných typech dávek pojednává článek Shellový skript.

Dávkový soubor je v operačním systému DOS, OS/2 a Microsoft Windows textový soubor obsahující sérii příkazů, které jsou zpracovány interpretem příkazového řádku. Když je dávkový soubor spuštěn, interpret (obvykle COMMAND.COM nebo cmd.exe) čte soubor a spouští jednotlivé příkazy, které jsou umístěny na samostatných řádcích. Dávkové soubory jsou užitečné, když je potřeba spustit po sobě několik spustitelných souborů, čehož obvykle využívají administrátoři pro automatizaci zdlouhavých procesů.

DOSové dávkové soubory mají příponu souboru .BAT (velikost písmen nemá vliv). Dávkové soubory v jiných prostředích mohou mít jiné přípony, jako například .cmd ve Windows NT a OS/2 nebo .btm ve 4DOS a příbuzných shellech. Mezi příponami .bat a .cmd není rozdíl, pokud jsou spouštěny svým jménem, avšak při použití zástupců jsou dávky s příponou .bat interpretovány 16bitovým COMMAND.COM a dávky s příponou .cmd jsou ve Windows NT interpretovány 32bitovým shellem cmd.exe a jsou povolena všechna rozšíření. Windows 9x rozeznávají pouze příponu .bat.

Historie[editovat | editovat zdroj]

Interpret používaný v příkazovém řádku poskytuje dva odlišné režimy: interaktivní režim (ve kterém uživatelé zadávají příkazy do výzvy promptu a které jsou po odeslání klávesou Enter vykonány) a dávkové zpracování (který provádí předdefinovanou sekvenci příkazů). Původní koncept těchto dvou režimů je převzat z unixových shellů stejně jako ostatní textově orientovaná rozhraní s příkazovým řádkem z let kolem roku 1980, jako bylo CP/M, který si zase vzal inspiraci ze systémů TOPS-10 a TOPS-20 od Digital Equipment Corporation.

Dávkové zpracování se v systémech MS-DOS a Microsoft Windows během času vyvíjelo. Přestože jsou dávkové soubory analogií k shellovým skriptůmunixových systémech, jejich omezená syntaxe a množství příkazů způsobují, že nejsou tak univerzálně a široce použitelné. Tato omezení vedla k rozvoji pomocných nástrojů, příkazů a dalších rozšíření, jako například v Nortnových utilitách nebo náhradě DOSového shellu 4DOS a později 4NT.

DOS[editovat | editovat zdroj]

V systému MS-DOS je interpretem příkazového řádku program COMMAND.COM. V dávkách lze používat několik jednoduchých interních příkazů, které provádí přímo COMMAND.COM a programy, které jsou uloženy ve spustitelných souborech (externí příkazy). Nejčastěji používaná je v systémech Windows 95 a Windows 98 dávka AUTOEXEC.BAT, která je automaticky spouštěna při startu systému (je-li přítomna). Systém Windows Me tuto vlastnost nemá.

Windows[editovat | editovat zdroj]

Nová linie 32bitového systému Windows NT (včetně Windows 2000, Windows XP a Windows Vista) již není založena na systému MS-DOS, ale má svoje vlastní 32bitové jádro. V nich je přítomen interpret cmd.exe, který je víceméně kompatibilní s interpretem COMMAND.COM, avšak některé vlastnosti chybí a jiné jsou naopak přidány. Proto je z důvodu zajištění lepší kompatibility v systémech NT přítomen i původní COMMAND.COM.

Pro komplexní úlohy je od Windows 98 k dispozici Windows Script Host, který umožňuje spouštění skriptů napsaných v jazyce VBScript, JScript a podobných skriptovacích jazycích. V roce 2006 byl uveden další nástroj nazvaný Windows PowerShell, který je možné používat v systémech Windows XP a novějších.

OS/2[editovat | editovat zdroj]

Přestože operační systém OS/2 od IBM podporuje dávkové soubory ve stylu DOSu, obsahuje pokročilý skriptovací jazyk REXX.

Rozšíření[editovat | editovat zdroj]

  • .bat: První rozšíření používáno dávkovacího souboru používáno Microsoftem. Toto rozšíření běží na MS_DOS a všech verzích Windows pod COMMAND.COM nebo cmd.exe.
  • .cmd: Používané pro dávkovací soubory v systémech Windows NT pomocí cmd.exe. COMMAND.COM nerozpozná tento typ souboru. K tomu, "set", "path", "assoc" a "prompt" příkazy ovlivňují "errorlevel" pouze po vyhlášení chyby při použití .bat souboru, zatímco .cmd soubor ovlivní "errorlevel" i když chyba nenastane[1]. Zároveň používáno v systémech IBM OS/2.
  • .btm: Rozšíření používáno pro 4DOS and 4NT. Dávkovací soubory které běží na 4DOS a 4NT jsou rychlejší, většinou delší, jelikož jsou to soubory které se před vykonáním načtou celé, místo toho aby se četli řádek po řádku.

Parametry[editovat | editovat zdroj]

COMMAND.COM a cmd.exe podporují několik proměnných (od %0%1 až po %9) za cílem odkázat na cestu a název dávkového zpracování a prvních devět volajících parametrů přímo z dávkovacího souboru (SHIFT). Neexistující parametry jsou nahrazeny textovým řetězcem nulové délky. Mohou být použité podobně jako proměnná prostředí.

Příklady[editovat | editovat zdroj]

Základní příklad[editovat | editovat zdroj]

Tento příklad vypíše "Ahoj světe!", a počká než uživatel zmáčkne libovolnou klávesu, poté se ukončí. (Poznámka: Nezáleží na dodržování malých a velkých písmen pokud nepracujeme s proměnnými)

@ECHO OFF
ECHO Ahoj světe!
PAUSE

pro spuštění musí být souboru uložen jako .bat (nebo .cmd pro operační systémy Windows-NT) ve formátu prostého textu, většinou psáno v textovém editoru jako například Notepad. Po spuštění se zobrazí:

Ahoj světe!
Press any key to continue . . .

 Vysvětlení[editovat | editovat zdroj]

Soubor je čten řádek po řádku, počínaje od prvního. Symbol @  Na začátku řádku vypíná vypisování aktuálně prováděného příkazu. Příkaz ECHO OFF vypne vypisování, dokud není znova spuštěno. Kombinace @ECHO OFF lze většinou najít ve většině dávkovacích souborů na prvním řádku, zabraňujíc vypisování jakýchkoliv příkazů. Na dalším řádku příkaz ECHO Hello World! zobrazí Ahoj světe!. Další řádek obsahuje příkaz PAUSE, který zobrazí Press any key to continue . . . a zastaví provádění aktuálního skriptu. Poté co je zmáčknuta libovolná klávesa se terminál ukončí, jelikož nejsou další příkazy, které by se dali provést. V systémech Windows se dávkovací soubor spouští pomocí Příkazové řádky. Příkaz PAUSE na konci skriptu udržuje okno otevřené jak dlouho uživatel potřebuje.

Příklad jednoduchého dávkového souboru:[editovat | editovat zdroj]

@ECHO OFF
REM ECHO OFF vypíná vypisování jednotlivých příkazů na terminál
REM ECHO. vytiskne prázdný řádek
ECHO.
ECHO Ahoj světe, stiskni klávesu pro start programu APROGRAM.EXE!
PAUSE > NUL
REM První argument dávky může být předán pomocí "%1"
APROGRAM.EXE %1
IF ERRORLEVEL 1 GOTO error
ECHO.
ECHO APROGRAM byl ukončen v pořádku.
GOTO end
:error
ECHO.
ECHO APROGRAM skončil s nějakou chybou.
:end

Související články[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Batch file na anglické Wikipedii.

  1. Rozdíl mezi .bat a .cmd dávkovacími soubory [online]. waynes-world-it.blogspot.cz, [cit. 2016-06-07]. Dostupné online.