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 cmd
tiene 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 (
.bat
archivos compatibles con DOS y .cmd
archivos 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. command
es una versión de 16 bits del intérprete de comandos que está mucho más cerca del DOS real que el cmd.exe
que es en realidad un programa de Windows (y tiene el encabezado de Windows PE, a diferencia del command.com
que tiene el encabezado de DOS MZ).
command
tiene los mismos propósitos, cmd
excepto que solo admite programas de 16 bits. Además, no admite .cmd
archivos y tiene menos comandos integrados y su sintaxis es más limitada ( cmd
es 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 command
en 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.com
tiene una .com
extensió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 .exe
archivo 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.com
es 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.