Línea de comandos predeterminada para MS-DOS y Windows 9x
COMMAND.COM es el intérprete de línea de comandos predeterminado para MS-DOS , Windows 95 , Windows 98 y Windows Me . En el caso de DOS, también es la interfaz de usuario predeterminada. Tiene una función adicional como el primer programa que se ejecuta habitualmente después del arranque ( proceso init ). Como shell, COMMAND.COM tiene dos modos de funcionamiento distintos: modo interactivo y modo por lotes . Los comandos internos son comandos almacenados directamente dentro del binario COMMAND.COM ; por lo tanto, siempre están disponibles, pero solo se pueden ejecutar directamente desde el intérprete de comandos.
COMMAND.COM es un programa DOS. Los programas que se ejecutan desde COMMAND.COM son programas DOS que utilizan la API DOS para comunicarse con el sistema operativo del disco. El procesador de comandos compatible con FreeDOS a veces también se denomina FreeCom .
Modos de funcionamiento
Como shell, COMMAND.COM tiene dos modos de funcionamiento distintos. El primero es el modo interactivo , en el que el usuario escribe comandos que se ejecutan inmediatamente. El segundo es el modo por lotes , que ejecuta una secuencia predefinida de comandos almacenados como un archivo de texto con la extensión .BAT .
Comandos internos
Los comandos internos son comandos almacenados directamente dentro del binario COMMAND.COM. Por lo tanto, siempre están disponibles, pero solo se pueden ejecutar directamente desde el intérprete de comandos.
Todos los comandos se ejecutan después de ↵ Enterpresionar la tecla al final de la línea. COMMAND.COM no distingue entre mayúsculas y minúsculas, lo que significa que los comandos se pueden escribir con cualquier combinación de mayúsculas y minúsculas.
Copia un archivo a otro (si el archivo de destino ya existe, MS-DOS pregunta si desea reemplazarlo). (Véase también XCOPY , un comando externo que también podría copiar árboles de directorios).
CTTY
Define el dispositivo a utilizar para entrada y salida.
Elimina un archivo. Cuando se utiliza en un directorio, elimina todos los archivos dentro del directorio únicamente. En comparación, el comando externo DELTREE elimina todos los subdirectorios y archivos dentro de un directorio, así como el directorio mismo.
Muestra el nombre físico completamente expandido de un archivo, resolviendo las asignaciones lógicas del sistema de archivos ASSIGN , JOIN y SUBST . [4]
Reemplaza cada uno de los parámetros de reemplazo con el siguiente (por ejemplo , %0con %1, %1con %2, etc.).
Comando IF
Al salir, todos los comandos externos envían un código de retorno (un valor entre 0 y 255) al programa que los llama. La mayoría de los programas tienen una convención determinada para sus códigos de retorno (por ejemplo, 0 para una ejecución exitosa). [6] [7] [8] [9]
Si un programa fue invocado por COMMAND.COM, el comando interno IF con su condicional ERRORLEVEL se puede utilizar para probar las condiciones de error del último programa externo invocado. [ cita requerida ]
En COMMAND.COM, los comandos internos no establecen un nuevo valor. [ cita requerida ]
Variables
Los archivos por lotes para COMMAND.COM pueden tener cuatro tipos de variables:
Variables de entorno : tienen la forma %VARIABLE% y están asociadas a valores con la instrucción SET. Antes de DOS 3, COMMAND.COM solo expandía las variables de entorno en modo por lotes; es decir, no de manera interactiva en el símbolo del sistema. [ cita requerida ]
Parámetros de reemplazo : tienen la forma %0 , %1 ... %9 y contienen inicialmente el nombre del comando y los primeros nueve parámetros de línea de comando pasados al script (por ejemplo, si el comando que invocó fue , entonces %0 es "myscript.bat", %1 es "John" y %2 es "Doe"). Los parámetros a la derecha del noveno se pueden asignar a un rango utilizando la declaración SHIFT. [ cita requerida ]myscript.bat John Doe
Variables de bucle: se utilizan en bucles y tienen el formato %% a cuando se ejecutan en archivos por lotes. Estas variables se definen únicamente dentro de una declaración FOR específica y se repiten sobre un determinado conjunto de valores definidos en esa declaración FOR. [ cita requerida ]
Los comandos separados por ASCII-20 (¶, invocados por + ) se ejecutan en secuencia (encadenamiento de comandos). [4] En otras palabras, primero se ejecuta command1 hasta la terminación, luego command2 . [4] Esta es una característica no documentada en COMMAND.COM de MS-DOS / PC DOS 5.0 y superiores. [4] También es compatible con COMMAND.COM de la familia Windows NT así como con DR-DOS 7.07. Todas las versiones de DR-DOS COMMAND.COM ya admitían una función interna similar que utilizaba un signo de exclamación (!) en su lugar (una característica derivada originalmente de Concurrent DOS y Multiuser DOS ): en la línea de usuario único, esta característica solo estaba disponible internamente (en scripts de inicio integrados como "!DATE!TIME") e indirectamente a través del parámetro $T de DOSKEY para evitar problemas con ! como carácter de nombre de archivo válido. [4] 4DOS admite un separador de línea de comandos configurable ( 4DOS.INI CommandSep= o SETDOS /C), cuyo valor predeterminado es ^. [11] COMMAND.COM en versiones más nuevas de Windows NT también admite un separador para compatibilidad con la sintaxis cmd en OS/2 y la familia Windows NT. [11] (cmd no admite el separador ¶).CtrlT&
Limitaciones
Generalmente, la longitud de la línea de comandos en modo interactivo está limitada a 126 caracteres. [12] [13] [14] En MS-DOS 6.22 , la longitud de la línea de comandos en modo interactivo está limitada a 127 caracteres. [ cita requerida ]
En la cultura popular
El mensaje "Cargando COMMAND.COM" se puede ver en una vista HUD del Terminator y en la ventana gráfica interna de RoboCop cuando se reinicia. [ cita requerida ]
En la serie animada de televisión infantil ReBoot , que se desarrolla dentro de computadoras, el líder de un sistema (el equivalente de una ciudad) se llama COMMAND.COM. [ cita requerida ]
— tienen procesadores de comandos similares que no se llaman COMMAND.COM
PC-MOS/386 — tiene un procesador de comandos similar también llamado COMMAND.COM
Área de programa transitorio : memoria disponible para que la use la aplicación en ejecución o la parte transitoria de COMMAND.COM
SpartaDOS X : una implementación similar para computadoras Atari
Referencias
^ "MS-DOS/COMMAND.ASM en master · microsoft/MS-DOS". GitHub .
^ "MS-DOS | Definición, características, importancia y datos | Britannica". www.britannica.com . Consultado el 26 de junio de 2024 .
^ Kurth, Rüdiger; Groß, Martín; Hambre, Henry (29 de noviembre de 2016) [2007]. "Sistema de apuestas DCP". www.robotrontechnik.de (en alemán). Archivado desde el original el 3 de abril de 2019 . Consultado el 28 de abril de 2019 .
^ abcdefgh Paul, Matthias R. (30 de julio de 1997) [1 de mayo de 1994]. NWDOS-TIP: consejos y trucos para Novell DOS 7, con un clic para deshacer detalles, errores y soluciones. Versión 157 (en alemán) (3 ed.). Archivado desde el original el 4 de noviembre de 2016 . Consultado el 6 de agosto de 2014 .{{cite book}}: |work=ignorado ( ayuda ) (NB: el enlace proporcionado apunta a una versión convertida a HTML del NWDOSTIP.TXT, que es parte de la MPDOSTIP.ZIPcolección). [1]
^ ab "Capítulo 7: Procesamiento por lotes". Guía del usuario de Caldera DR-DOS 7.02 . Caldera, Inc. 1998 [1993, 1997]. Archivado desde el original el 2017-09-11 . Consultado el 2017-09-11 .
^ Paul, Matías R. (1 de mayo de 1997) [1 de octubre de 1993]. BATTIPs: consejos y trucos para Programmierung von Batchjobs (en alemán). Capítulo 7: ERRORLEVEL abfragen. Archivado desde el original el 23 de agosto de 2017 . Consultado el 23 de agosto de 2017 .{{cite book}}: |work=ignorado ( ayuda ) (NB. BATTIPS.TXT es parte de MPDOSTIP.ZIP. El enlace provisto apunta a una versión anterior convertida a HTML del archivo BATTIPS.TXT.) [2]
^ Auer, Eric; Paul, Matthias R.; Hall, Jim (2015-12-24) [2003-12-31]. "Niveles de error de MS-DOS". Archivado desde el original el 2015-12-24.
^ Paul, Matthias R. (2003) [1997]. Auer, Eric (ed.). "Códigos de salida (niveles de error) de utilidades de DOS". Archivado desde el original el 11 de septiembre de 2017. Consultado el 11 de septiembre de 2017 .[3]
^ Allen, William; Allen, Linda. "Niveles de error de Windows 95/98/ME". Archivado desde el original el 29 de octubre de 2005.
^ Guía del usuario de Caldera DR-DOS 7.02. Caldera, Inc. 1998 [1993, 1997]. Archivado desde el original el 4 de noviembre de 2016. Consultado el 10 de agosto de 2013 .
^abc
[...] Comandos múltiples: Puede escribir varios comandos en la misma línea de comandos, separados por un signo de intercalación [^]. Por ejemplo, si sabe que desea copiar todos sus archivos .TXT a la unidad A: y luego ejecutar CHKDSK para asegurarse de que la estructura de archivos de la unidad A está en buenas condiciones, podría ingresar el siguiente comando: Puede colocar tantos comandos en la línea de comandos como desee, siempre que la longitud total de la línea de comandos no exceda los 511 caracteres. Puede usar varios comandos en alias y archivos por lotes, así como en la línea de comandos. Si no le gusta usar el separador de comandos predeterminado, puede elegir otro carácter usando el comando o la directiva CommandSep en 4DOS.INI . [...] (Carácter compuesto) Esta opción establece el carácter utilizado para separar varios comandos en la misma línea. El valor predeterminado es el signo de intercalación [^]. No puede usar ninguno de los caracteres de redirección [<>|], ni el espacio en blanco, la tabulación, la coma o el signo igual como separador de comandos. El separador de comandos se guarda con SETLOCAL y se restaura con ENDLOCAL. Este ejemplo cambia el separador a una tilde [~]: (Puede especificar el carácter en sí, o su código ASCII como un número decimal, o un número hexadecimal precedido por 0x). [...] CommandSep = c (^): Este es el carácter utilizado para separar varios comandos en la misma línea. [...] Compatibilidad de caracteres especiales: Si utiliza dos o más de nuestros productos, o si desea compartir alias y archivos por lotes con usuarios de diferentes productos, debe tener en cuenta las diferencias en tres caracteres importantes: el separador de comandos [...], el carácter de escape [...] y el carácter de parámetro [...]. Los valores predeterminados de cada uno de estos caracteres en cada producto se muestran en la siguiente tabla: [...] Producto, Separador, Parámetro de escape [...] 4DOS: ^, ↑, & [...] 4OS2, 4NT, Tomar comando: &, ^, $ [...] (La flecha hacia arriba [↑] representa el carácter ASCII Ctrl-X, valor numérico 24.) [...]C:\>COPY *.TXT A: ^ CHKDSK A:SETDOS /CSETDOS /C:C:\>SETDOS /C~
^ Paul, Matthias R. (1 de julio de 1997) [1 de enero de 1994]. MSDOSTIP: consejos para el uso de MS-DOS 5.0-7 (en alemán). Archivado desde el original el 22 de agosto de 2017 . Consultado el 25 de octubre de 2013 .{{cite book}}: |work=ignorado ( ayuda ) (NB. MSDOSTIP.TXT es parte de MPDOSTIP.ZIP, mantenido hasta 2001 y distribuido en muchos sitios en ese momento. El enlace provisto apunta a una versión anterior convertida a HTML del archivo MSDOSTIP.TXT.) [4]
^ Paul, Matías R. (1 de mayo de 1997) [1 de marzo de 1995]. "Hinweise zu JPSofts 4DOS 5.5b/c, 5.51, 5.52a y NDOS". MPDOSTIP (en alemán). Archivado desde el original el 4 de noviembre de 2016 . Consultado el 8 de mayo de 2015 .(NB: El enlace proporcionado apunta a una versión convertida a HTML del 4DOS5TIP.TXTarchivo, que es parte de la MPDOSTIP.ZIPcolección). [5]
^ Schulman, Andrew; Brown, Ralf D .; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [noviembre de 1993]. Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - extended to include MS-DOS 6, Novell DOS and Windows 3.1 (2.ª ed.). Reading, Massachusetts, EE. UU.: Addison Wesley . pp. 623, 626. ISBN.0-201-63287-X.(xviii+856+vi páginas, disquete de 3,5") Erratas: [6] [7]
Lectura adicional
[...] todas las versiones de MS-DOS anteriores a Windows 95 [...] utilizaban un archivo COMMAND.COM de estilo COM que tiene una firma especial al comienzo del archivo [...] consultado por el BIOS de MS-DOS antes de cargar el shell, pero no por el BIOS de DR-DOS [...] COMMAND.COM [...] comprobaría que se está ejecutando en la versión "correcta" de DOS, por lo que si cargaba su COMMAND.COM bajo DR-DOS, recibiría un mensaje de error de "Versión incorrecta" y su COMMAND.COM se cerraría, por lo que DR-DOS [...] mostraría un mensaje de error "Intérprete de comandos incorrecto o faltante" (si DR-DOS estaba intentando cargar el procesador de comandos SHELL= después de haber finalizado el procesamiento de CONFIG.SYS). En este caso, podría ingresar la ruta a un COMMAND.COM de DR-DOS válido (C:\DRDOS\COMMAND.COM) y todo estaría bien. Ahora, las cosas han cambiado desde MS-DOS 7.0 [...] COMMAND.COM se ha convertido internamente en un archivo de estilo EXE, por lo que no hay una firma mágica [...] para comprobar [...] por lo que no hay forma de que DR-DOS descarte un COMMAND.COM incompatible. Además, su COMMAND.COM ya no realiza ninguna comprobación de versión, pero [...] no funciona con DR-DOS [...] simplemente se bloquea [...] el COMMAND.COM de PC DOS funciona bien con DR-DOS [...]
Paul, Matthias R. (17 de junio de 2004). "Re: Bloqueos aleatorios con DR-DOS 7.03". Conferencia FidoNet : ALT_DOS . Archivado desde el original el 28 de abril de 2019 . Consultado el 28 de abril de 2019 .