COMMAND.COM — інтерпретатор командного рядка за замовчуванням для DOS, Windows 95, Windows 98, Windows 98 SE and Windows ME. У випадку DOS це також користувацький інтерфейс за замовчуванням. Він має додаткову роль, як правило, першої програми, що запускається після завантаження (кореневий процес), а тому відповідальний за налаштування системи шляхом запуску конфігураційного файлу AUTOEXEC.BAT і за те, щоби бути предком усіх процесів.
Спадкоємцем COMMAND.COM у системах OS/2 і Windows NT є cmd.exe, хоча COMMAND.COM також доступний у віртуальних машинах DOS у версіях IA-32 цих операційних систем.
Ім'я файлу COMMAND.COM також використовувалося Disk Control Program (DCP) — похідною MS-DOS від колишнього східнонімецького VEB Robotron.
Сумісний командний процесор під FreeDOS іноді також називається FreeCom.
COMMAND.COM — програма DOS. Програми, запущені з COMMAND.COM є програмами DOS, які використовують DOS API для комунікації з дисковою операційною системою.
Операційні режими
Як оболонка, COMMAND.COM має два різні режими роботи. Першим є інтерактивний режим, у якому користувач набирає команди, які потім негайно виконуються. Другим є пакетний режим, який виконує наперед визначену послідовність команд, збережену як текстовий файл із розширенням .BAT.
Внутрішні команди
Внутрішніми є команди, збережені прямо всередині двійкового файлу COMMAND.COM. Таким чином, вони завжди доступні, але можуть виконуватися лише прямо з командного інтерпретатора.
Всі команди виконуються після натискання клавіші ↵ Enter наприкінці рядка. COMMAND.COM регістронезалежний, що означає те, що команди можуть набиратися в будь-якій суміші верхнього та нижнього регістру.
- BREAK
- Контролює обробку переривання програми поєднанням Ctrl+C або Ctrl+Break.
- CHCP
- Відображає чи змінює поточну системну кодову сторінку.
- CHDIR, CD
- Змінює поточний робочий каталог або відображає поточний.
- CLS
- Очищає екран.
- COPY
- Копіює один файл до іншого (якщо файл призначення вже існує, то MS-DOS питає, чи замінити його). (див. також XCOPY — внутрішня команда, яка також може копіювати дерева каталогів).
- CTTY
- Визначає пристрій, що використовується для введення та виведення.
- DATE
- Відображає й установлює дату системи.
- DEL, ERASE
- Видаляє файл. Використана на каталозі, видаляє всі файли лише всередині каталогу. В порівнянні, зовнішня команда DELTREE видаляє всі підкаталоги та файли всередині каталогу, а також сам каталог.
- DIR
- Перелічує файли в зазначеному каталозі.
- ECHO
- Перемикає, чи відображається текст (
ECHO ON), чи ні (ECHO OFF). Також відображає текст на екрані (ECHO текст). - EXIT
- Виходить із COMMAND.COM і повертається до програми, яка запустила його.
- LFNFOR
- Вмикає чи вимикає повернення довгих імен файлів командою FOR (Windows 9x).
- LOADHIGH, LH
- Завантажує програму до верхньої пам'яті (
HILOADу DR-DOS). - LOCK
- Дозволяє зовнішнім програмам виконувати низькорівневий дисковий доступ до тому (тільки DOS 7.1 і Windows 9x)
- MKDIR, MD
- Створює новий каталог.
- PATH
- Відображає чи змінює значення змінної середовища PATH, яка контролює місця, де COMMAND.COM шукатиме виконавчі файли.
- PROMPT
- Відображає чи змінює значення змінної середовища PROMPT, яка контролює зовнішній вигляд командного рядка.
- RENAME, REN
- Перейменовує файл або каталог.
- RMDIR, RD
- Видаляє порожній каталог.
- SET
- Встановлює значення змінної середовища; без аргументів показує всі визначені змінні середовища.
- TIME
- Відображає й установлює час системи.
- TRUENAME
- Відображає повністю розширене фізичне ім'я файлу, вирішуючи логічні відображення файлової системи ASSIGN, JOIN і SUBST.
- TYPE
- Відображає вміст файлу в консолі.
- UNLOCK
- Вимикає низькорівневий дисковий доступ (тільки DOS 7.1 і Windows 9x)
- VER
- Відображає версію операційної системи.
- VERIFY
- Вмикає та вимикає перевірку запису для файлів.
- VOL
- Показує інформацію про том.
Команди пакетного файлу
Контрольні структури в основному використовуються всередині пакетних файлів, хоча вони також можуть використовуватися інтерактивно.
- :label
- Визначає ціль для GOTO.
- CALL
- Виконує інший пакетний файл, повертається до старого та продовжує.
- FOR
- Ітерація: повторює команду для кожного з визначеної множини файлів.
- GOTO
- Переміщує виконання до вказаної мітки. Мітки вказуються на початку рядка двокрапкою (
:likethis). - IF
- Умовна інструкція, дозволяє розгалуження виконання програми.
- PAUSE
- Зупиняє виконання програми та відображає повідомлення, просячи користувача натиснути будь-яку клавішу для продовження.
- REM
- коментар: будь-який текст після цієї команди ігнорується.
- SHIFT
- Заміняє кожен із параметрів заміни наступним (наприклад,
%0—%1,%1—%2і т. д.).
Команда IF
При виході всі зовнішні команди надсилають код повернення (значення між 0 і 255) програмі, що її викликала. Більшість програм мають певні конвенції для своїх кодів повернення (наприклад, 0 для успішного виконання).
Якщо програму викликав COMMAND.COM, то внутрішню команда IF з її ERRORLEVEL умовно можна використати для перевірки помилкових умов останньої викликаної зовнішньої програми.
Під COMMAND.COM внутрішні команди не встановлюють нового значення.
Змінні
Пакетні файли для COMMAND.COM можуть мати чотири види змінних:
- Змінні середовища: Вони мають вигляд
%VARIABLE%й асоційовані зі значеннями з інструкцією SET. До DOS 3 COMMAND.COM розширюватиме змінні середовища тільки в пакетному режимі; тобто неінтерактивно в командному рядку[джерело?]. - Параметри заміни: Вони мають вигляд
%0,%1…%9і спочатку містять назву команди та перші дев'ять параметрів командного рядка, переданих сценарію (наприклад, якщо команда, що викликає, була «myscript.bat Джон Доу», то%0— «myscript.bat»,%1— «Джон», а%2— «Доу»). Параметри праворуч від дев'ятого можна відобразити в діапазон використанням інструкції SHIFT. - Змінні циклу: Використовувані в циклах, вони мають формат
%%a, коли працюють у пакетних файлах. Ці змінні визначені винятково в конкретній інструкції FOR та ітеруються над певною множиною значень, визначеною в цій же інструкції FOR. - Під Novell DOS 7, OpenDOS 7.01, DR-DOS 7.02 і вищими COMMAND.COM також підтримує ряд змінних системної інформації, можливість раніше була в 4DOS 3.00 і вище, як і в Multiuser DOS, хоча більшість імен підтримуваних змінних відрізняється.
Перенаправлення, каналювання та ланцюгування
Оскільки DOS — однозадачна операційна система, каналювання досягається запуском команд послідовно, перенаправляючи до та з тимчасового файлу. COMMAND.COM не передбачає перенаправлення каналу стандартних помилок.
''command'' < ''filename''- Перенаправляє стандартне введення з файлу чи пристрою
''command'' > ''filename''- Перенаправляє стандартне виведення, перезаписуючи цільовий файл, якщо він існує.
''command'' >> ''filename''- Перенаправляє стандартне виведення, доповнюючи цільовий файл, якщо він існує.
''command1''- Каналює стандартне виведення з command1 до стандартного введення command2
''command1'' ¶ ''command2''- Команди, розділені ASCII-20 (¶, викликається Ctrl+T) виконуються в послідовності (ланцюгування команд). Іншими словами, перша command1 виконується до припинення, потім command2. Це недокументована можливість COMMAND.COM у MS-DOS/PC DOS 5.0 і вищих. Вона також підтримується COMMAND.COM родини Windows NT, так само, як і DR-DOS 7.07. Всі версії COMMAND.COM DR-DOS уже підтримують схожу внутрішню функцію, що використовує натомість знак оклику (!) (можливість спочатку походить із Concurrent DOS і Multiuser DOS) — проте, в однокористувацькій лінії дана можливість була доступна тільки внутрішньо (у вбудованих сценаріях запуску на кшталт «!DATE!TIME») та непрямо через параметр DOSKEY $T для уникнення проблем із ! як дійсним символом імені файлу. 4DOS підтримує налаштовуваний роздільник рядків команд (4DOS.INI CommandSep= або SETDOS /C), який за замовчуванням дорівнює ^. COMMAND.COM у новіших версіях Windows NT також підтримує роздільник & для сумісності з синтаксисом cmd у OS/2 і родині Windows NT (cmd, однак, не підтримує роздільник ¶).
Обмеження
Довжина командного рядка в інтерактивному режимі обмежена 126 символами.
У популярній культурі
Повідомлення «Завантаження COMMAND.COM» можна побачити у HUD view Термінатора та внутрішньому viewport Робокопа, коли він перезавантажується.
У дитячому комп'ютерному мультсеріалі «ReBoot», дія якого відбувається всередині комп'ютерів, керівник системи (еквівалента міста) називається COMMAND.COM.
