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. |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/94/FreeDOS_Beta_9_pre-release5_%28command_line_interface%29_on_Bochs_sshot20040912.png/220px-FreeDOS_Beta_9_pre-release5_%28command_line_interface%29_on_Bochs_sshot20040912.png)
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
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ů
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
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
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
Ří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é
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
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í
Délka příkazového řádku je omezena na 128 znaků. Po provedení příkazu vždy vrací pravdu (0).
Kulturní odkazy
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
Externí odkazy
- 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
- ↑ dokumentováno v SDK a MS KB článku