COMMAND.COM

shell v systémech DOS

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ů.

COMMAND.COM
VývojářSeattle Computer Products, Microsoft Corporation, IBM, Novell a další.
Operační systémDR-DOS, FreeDOS, MS-DOS, Novell-DOS, OpenDOS, PC DOS, PTS-DOS, ROM-DOS, 86-DOS, Microsoft Windows (Windows 95 - Windows Vista) a další.
Typ softwaruShell
LicenceOpen source a Proprietární
Některá data mohou pocházet z datové položky.
Příkazový řádek se shellem COMMAND.COM textového rozhraní FreeDOSu.

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

Jako shellCOMMAND.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

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

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

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

Ří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

Dávkové soubory pro COMMAND.COM mají čtyři typy proměnných:

  1. 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.
  2. 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.
  3. 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.
  4. 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

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

Délka příkazového řádku je omezena na 128 znaků. Po provedení příkazu vždy vrací pravdu (0).

Kulturní odkazy

editovat

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

Externí odkazy

editovat

Reference

editovat
  1. dokumentováno v SDK a MS KB článku