TL; DR
Cuando ejecuta un programa de consola de 32 bits, lo ejecuta cmd; cuando ejecuta un programa de consola de 16 bits, lo ejecuta command.
Detalles
Windows XP incluye un subsistema para admitir aplicaciones antiguas de 16 bits.
Las aplicaciones antiguas de 16 bits están disponibles como programas DOS y Windows. Los programas de DOS por su naturaleza son aplicaciones de consola y se ejecutan en lo que parece el símbolo del sistema. Sin embargo, las aplicaciones de consola de Windows de 32 bits son muy similares y tienen el mismo aspecto.
El procesador / intérprete de comandos cmdtiene varios propósitos:
- Para ejecutar el programa de consola de Windows de texto de 32 bits
- Para proporcionar y manejar diversas funciones de línea de comandos (
dir, copy, etc.)
- Interpretar y ejecutar archivos por lotes (
.batarchivos compatibles con DOS y .cmdarchivos compatibles con NT )
Cuando ejecuta un antiguo programa de consola de 16 bits, lo ejecuta NTVDM (máquina virtual de Windows NT de DOS). Proporciona un sistema DOS emulado (de ahí la máquina virtual DOS ) que es similar a ejecutar un software de máquina virtual dedicado, excepto que la capa de emulación es más simple. commandes una versión de 16 bits del intérprete de comandos que está mucho más cerca del DOS real que el cmd.exeque es en realidad un programa de Windows (y tiene el encabezado de Windows PE, a diferencia del command.comque tiene el encabezado de DOS MZ).
commandtiene los mismos propósitos, cmdexcepto que solo admite programas de 16 bits. Además, no admite .cmdarchivos y tiene menos comandos integrados y su sintaxis es más limitada ( cmdes un intérprete de línea de comandos más nuevo, más moderno y más avanzado, similar a 4DOS ).
Sin embargo, es compatible con programas gráficos de DOS (como juegos antiguos), pero el éxito de su ejecución depende de los controladores de la tarjeta de video y de la naturaleza del programa. Existen numerosos sitios que ofrecen varios trucos para que los juegos de DOS se ejecuten en Windows (aunque el éxito en Vista y versiones posteriores suele ser más limitado que en XP).
Cabe señalar que las versiones de Windows de 64 bits han dejado de admitir completamente los programas de 16 bits, por lo que no se incluyen commanden absoluto, por lo que ni los programas de DOS ni Windows de 16 bits se ejecutarán y en su lugar arrojarán un mensaje de error (engañoso) .
Notas técnicas
command.comtiene una .comextensión para la compatibilidad con los programas de DOS, pero como la mayoría de las otras versiones de Windows de comandos externos de DOS, internamente, en realidad es un .exearchivo de Windows PE . Esto proporciona la observación interesante de que si bien Windows usa la extensión como un indicador de cómo manejar la mayoría de los tipos de archivos, para los ejecutables, ignora la extensión y mira su contenido (de lo contrario .exe, no funcionaría si se tratara como a .com). Esta pregunta se relaciona con este efecto.
command.comes la versión heredada de 16 bits (solo disponible en instalaciones de 32 bits). No existe en mi versión de 64 bits de Windows 7.