TL; DR
При запуску 32-бітної консольної програми вона виконується cmd; коли ви запускаєте 16-бітну консольну програму, вона виконується command.
Деталі
Windows XP включає підсистему для підтримки старих 16-бітних програм.
Старі 16-бітні програми доступні як у програмах DOS, так і Windows. Програми DOS за своєю природою є консольними програмами та працюють у тому, що схоже на командний рядок. Однак 32-розрядні програми консолі Windows дуже схожі і виглядають однаково.
Командний процесор / інтерпретатор cmdмає кілька цілей:
- Для виконання 32-бітної текстової програми консолі Windows
- Для того, щоб забезпечити і обробляти різні функції командного рядка (
dir, copyі т.д.)
- Інтерпретація та виконання пакетних файлів (сумісних з DOS
.batфайлів та NT-сумісних .cmdфайлів)
Під час запуску старої 16-бітної консольної програми вона виконується NTVDM (Windows NT Virtual DOS Machine). Він надає емульовану систему DOS (отже, і віртуальну машину DOS ), яка схожа на запуск спеціалізованого програмного забезпечення віртуальної машини, за винятком того, що шар емуляції є більш простим. commandце 16-розрядна версія командного інтерпретатора, що набагато ближче до фактичного DOS, ніж cmd.exeнасправді програма Windows (і має заголовок Windows PE, на відміну від command.comякої має заголовок DOS MZ).
commandмає ті самі цілі, cmdщо і лише те, що він підтримує лише 16-бітні програми. Крім того, він не підтримує .cmdфайли і має меншу кількість вбудованих команд і обмежений у своєму синтаксисі ( cmdце новіший, сучасніший, більш просунутий інтерпретатор командного рядка, подібний до 4DOS ).
Однак він підтримує графічні програми DOS (як і старі ігри), але успіх їх запуску залежить від драйверів відеокарт та характеру програми. Існує чимало сайтів, які пропонують різні хитрощі, щоб змусити DOS-ігри працювати на Windows (хоча успіх у Vista і вище зазвичай обмежений, ніж на XP).
Слід зазначити, що 64-розрядні версії Windows повністю відмовилися від підтримки 16-бітних програм, і тому взагалі не включають command, тому ні DOS, ні 16-бітні програми Windows не запускатимуться, а замість цього викинуть (вводить в оману) повідомлення про помилку .
Технічні примітки
command.comмає .comрозширення для зворотної сумісності з програмами DOS, але, як і більшість інших версій Windows для зовнішніх команд DOS, внутрішньо, це фактично файл Windows PE .exe. Це дає цікаве зауваження, що, хоча Windows використовує розширення як індикатор того, як обробляти більшість типів файлів, для виконавчих файлів він ігнорує розширення і розглядає його вміст (інакше .exeанкета не працює, якщо трактуватись як a .com). Це питання стосується цього ефекту.
command.comце застаріла 16-бітна версія (доступна лише для 32-бітних установок). Він не існує в моїй 64-