COMMAND.COM

Z Wikipedie, otevřené encyklopedie
(přesměrováno z Command.com)
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.

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 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 | 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:

  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 | 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]

Reference[editovat | editovat zdroj]

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