COMMAND.COM
Vývojář | Seattle Computer Products, Microsoft Corporation, IBM, Novell a další. |
---|---|
Operační systém | DR-DOS, FreeDOS, MS-DOS, Novell-DOS, OpenDOS, PC DOS, PTS-DOS, ROM-DOS, 86-DOS, Microsoft Windows (Windows 95 - Windows Vista) a další. |
Typ softwaru | Shell |
Licence | Open source a Proprietární |
Některá data mohou pocházet z datové položky. |
COMMAND.COM je jméno implicitního shellu pro DOS a implicitní interpret příkazového řádku v 16/32bitových verzích Microsoft Windows (95/98/Me). Při startu systému DOS je COMMAND.COM automaticky spuštěn a je automaticky proveden dávkový soubor AUTOEXEC.BAT. Je také rodičem všech následně spuštěných procesů.
Nástupcem programu COMMAND.COM je v systémech OS/2 a Windows NT program cmd.exe. Program COMMAND.COM je však v těchto systémech stále přítomen, aby bylo možné zajistit vyšší kompatibilitu se staršími programy, které jsou spouštěny v NT Virtual DOS machine.
Operační režimy
[editovat | editovat zdroj]Jako shell má COMMAND.COM dva režimy. První je interaktivní režim, ve kterém jsou vložené příkazy ihned zpracovány. Druhý je dávkový režim, který provádí příkazy předem zapsané v dávkovém souboru s příponou .BAT.
Zadávání příkazů
[editovat | editovat zdroj]Všechny vložené příkazy jsou provedeny po stisknutí klávesy Enter na konci zadaného řádku. Interpret COMMAND.COM nerozlišuje velikost písmen (anglicky case insensitive), takže příkazy mohou být vkládány bez ohledu na velká a malá písmena (všechny zápisy dir, DIR and DiR jsou stejný příkaz).
Chceme-li spustit program, není nutné zadávat příponu .BAT, .COM ani .EXE. Změna jednotky se provádí zadáním jejího jména následovaného dvojtečkou (tj. např. A:).
Interní příkazy
[editovat | editovat zdroj]Aby bylo možné pracovat se systémem i v případě, že nemáme k dispozici žádné externí programy (s příponami .COM a .EXE), jsou všechny základní příkazy prováděny samotným interpretem COMMAND.COM. Jsou to:
- DIR
- vypíše soubory v (aktuálním) adresáři
- CD, CHDIR
- změní pracovní adresář nebo zobrazí aktuální adresář
- COPY
- kopíruje soubor (pokud cíl existuje, zeptá se, zda ho má přepsat); viz také externí program XCOPY, který může kopírovat celé adresáře
- REN, RENAME
- přejmenování souboru nebo adresáře
- DEL, ERASE
- smazání souboru; při použití na adresář smaže všechny obsažené soubory, ale neumí smazat adresáře rekurzivně nebo smazat samotný adresář
- MD, MKDIR
- vytvoří adresář
- RD, RMDIR
- smaže adresář
- VOL
- zobrazí informace o svazku
- LABEL
- změní popisku svazku
- VERIFY
- povolí nebo zakáže kontrolu zápisu do souborů
- TYPE
- zobrazí obsah souboru na konzoli
- BREAK
- zapíná a vypíná přerušení pomocí Ctrl+C
- CLS
- smaže obrazovku
- CHCP
- zobrazí aktuální znakovou stránku
- CTTY
- definuje zařízení pro vstup a výstup
- DATE
- nastaví datum
- ECHO
- zapne nebo vypne zobrazování textu (ECHO ON) a (ECHO OFF); zobrazí text na obrazovce (ECHO text)
- LH, LOADHIGH
- zavede program do vrchní paměti (anglicky upper memory) (HILOAD v DR DOSu)
- LOCK
- povolí externím programům přímý přístup na pevný disk (pouze Windows 95/98/Me)
- PATH
- zobrazí nebo nastaví cestu PATH, kde COMMAND.COM hledá spustitelné soubory
- PAUSE
- pozastaví provádění dávkového souboru a vyčká do stisknutí klávesy
- PROMPT
- zobrazí nebo změní nastavení Promptu
- SET
- nastaví proměnnou; bez parametru zobrazí všechny nastavené proměnné
- TIME
- nastaví čas
- UNLOCK
- zakáže přímý přístup na disk (pouze Windows 95/98/Me)
- VER
- zobrazí verzi operačního systému
Nedokumentované příkazy
[editovat | editovat zdroj]Některé verze MS-DOSu obsahují nedokumentované příkazy:
- LFNFOR
- povolí nebo zakáže příkazu FOR vracet dlouhé názvy souborů (pouze Windows 95/98/Me)[1]
- TRUENAME
- zobrazí skutečné jméno souboru (vynechá mapování pomocí SUBST a ASSIGN)
Řídící struktury
[editovat | editovat zdroj]Řídící struktury jsou využívány zejména v dávkových souborech, avšak mohou být využity i v interaktivním režimu.
- :label
- definuje návěští (cíl pro GOTO); musí být na začátku řádku
- FOR
- iterace: opakuje příkaz pro všechny zadané soubory
- GOTO
- skok na návěští (viz výše)
- REM
- komentář: jakýkoliv následující text je až do konce řádku ignorován
- IF
- podmínka, umožňuje větvení programu
- CALL
- volání podprogramu v podobě jiné dávky; po vykonání pokračuje následujícím příkazem
- EXIT
- ukončení COMMAND.COM a návrat do programu, který ho spustil; používá se k ukončení dávky
- SHIFT
- posunutí všech parametrů z příkazového řádku o jednu pozici vlevo (tj. %0 bude %1, %1 bude %2 atd.)
Proměnné
[editovat | editovat zdroj]Dávkové soubory pro COMMAND.COM mají čtyři typy proměnných:
- ERRORLEVEL - obsahuje návratový kód posledního spuštěného programu (celé číslo mezi 0 a 255). Většina programů má své konvence návratových kódů (například 0 pro úspěšné ukončení). Některé programy návratový kód nenastavují, takže v proměnné zůstane předcházející hodnota. Hodnotu ERRORLEVEL lze testovat pomocí podmínky IF.
- proměnné prostředí - odkazuje se na ně pomocí formy %VARIABLE% a obsahují hodnotu zadanou příkazem SET. Většina verzí COMMAND.COM expanduje proměnné pouze v dávkovém režimu.
- parametry z příkazového řádku - mají tvar %0, %1...%9 a obsahují název programu a jeho prvních 9 parametrů z příkazového řádku předané skriptu (tj. spuštěním "skript.bat jedna 2" obsahuje %0 "skript.bat", %1 obsahuje "jedna" a %2 obsahuje "2"). Parametry za devátým mohou být zpřístupněny pomocí příkazu SHIFT.
- proměnné příkazu FOR - používají se ve smyčkách a mají v dávkách formát %%a. Tyto proměnné jsou definovány pouze uvnitř smyčky FOR a obsahují postupně všechny definované hodnoty.
Přesměrování a roury
[editovat | editovat zdroj]Přesměrování standardních proudů je v DOSu omezené. Protože je DOS jednoúlohový systém, je roura realizována sekvenčním (postupným) spuštěním příkazů, přičemž data se uchovávají v dočasném souboru. COMMAND.COM
neposkytuje podporu pro práci se standardním chybovým výstupem. Přesměrování si řídí každý program sám, takže je funkční jen u některých příkazů (na rozdíl od unixových shellů, kde přesměrování řídí sám shell a programy je samy nezajišťují).
- příkaz < filename
- přesměrování standardního vstupu příkazu na vstup ze souboru nebo zařízení
- příkaz > filename
- přesměrování standardního výstupu příkazu; pokud cíl existuje, je přepsán
- příkaz >> filename
- přesměrování standardního výstupu příkazu; pokud cíl existuje, je přidán za jeho konec
- příkaz1 | příkaz2
- roura ze standardního výstupu příkaz1 do vstupu příkaz2
Chyby a omezení
[editovat | editovat zdroj]Délka příkazového řádku je omezena na 128 znaků. Po provedení příkazu vždy vrací pravdu (0).
Kulturní odkazy
[editovat | editovat zdroj]Zpráva "Loading COMMAND.COM" je zobrazena na průhledu Terminátora T-800 a v interním zobrazení RoboCopa, když se restartuje.
The COMMAND.COM
je pozice autority v kresleném seriálu ReBoot.
command.com je webová stránka s obrázkem promptu, kde je spuštěn příkaz "DIR". Je to však pouze trik, který má uživatele přesvědčit, že je zobrazován obsah jeho disku. Ve výstupu příkazu je však chyba, protože adresáře . a .. nejsou při zobrazení kořenového adresáře vypisovány.
Související články
[editovat | editovat zdroj]Externí odkazy
[editovat | editovat zdroj]- Batfiles: The DOS batch file programming handbook & tutorial (anglicky)
- William and Linda Allen's Windows 95/98/ME ERRORLEVELs documentation (small ZIP file) (anglicky)
- command.com website (Internet Archive) (anglicky)
Reference
[editovat | editovat zdroj]- ↑ dokumentováno v SDK a MS KB článku