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ý souborAUTOEXEC.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 (anglickycase 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:
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.