COMMAND.COM: El intérprete de comandos predeterminado para MS-DOS y versiones antiguas de Windows

COMMAND.COM fue el intérprete de línea de comandos predeterminado en MS-DOS y en las primeras versiones de Windows, incluidas Windows 95, Windows 98 y Windows Me. Aunque estos sistemas han sido reemplazados en gran medida por interfaces gráficas y versiones más modernas de Windows, COMMAND.COM jugó un papel fundamental en la evolución de las interfaces de usuario y el funcionamiento de los sistemas operativos en la era temprana de la computación personal.

Función principal de COMMAND.COM

En los sistemas MS-DOS, COMMAND.COM era tanto el intérprete de comandos como la interfaz de usuario predeterminada. A diferencia de los sistemas operativos modernos que ofrecen una interfaz gráfica completa, MS-DOS era puramente basado en texto y el usuario interactuaba con el sistema operativo a través de comandos escritos. Cada vez que se encendía el ordenador, COMMAND.COM era el primer programa en ejecutarse después del proceso de arranque, actuando como el «proceso init» del sistema. Desde ahí, proporcionaba el entorno interactivo para que el usuario ingresara comandos y controlara el sistema.

Modos de operación de COMMAND.COM

COMMAND.COM ofrecía dos modos de operación principales:

  1. Modo interactivo: Este es el modo en el que la mayoría de los usuarios interactuaba diariamente. En el modo interactivo, el usuario ingresa comandos de manera directa, los cuales son interpretados y ejecutados de inmediato. Por ejemplo, comandos como dir para listar los archivos en un directorio, o copy para copiar archivos, se ejecutaban instantáneamente cuando se introducían en la línea de comandos.
  2. Modo batch (por lotes): En este modo, COMMAND.COM ejecutaba una serie de comandos previamente escritos en un archivo con la extensión .bat (archivo por lotes). Esto permitía a los usuarios automatizar tareas repetitivas. Los archivos por lotes podían contener secuencias de comandos que serían ejecutadas de manera secuencial sin la necesidad de intervención del usuario, facilitando la automatización de procesos rutinarios como copias de seguridad, mantenimiento de discos o configuraciones iniciales del sistema.

Comandos internos

Los comandos internos son aquellos almacenados directamente en el binario de COMMAND.COM. Esto significa que siempre estaban disponibles para su uso, incluso si no había archivos del sistema presentes en el disco. A diferencia de los comandos externos, que eran programas ejecutables almacenados en archivos separados, los comandos internos formaban parte del propio COMMAND.COM y no requerían acceso a discos adicionales para ejecutarse.

Algunos de los comandos internos más utilizados incluyen:

  1. dir: Muestra una lista de archivos y subdirectorios dentro de un directorio.
    • Ejemplo: dir c:\ lista todos los archivos y carpetas en el directorio raíz de C:.
  2. copy: Copia archivos de un lugar a otro.
    • Ejemplo: copy file1.txt d:\ copia el archivo file1.txt a la unidad D:.
  3. del (o erase): Elimina uno o varios archivos.
    • Ejemplo: del archivo.txt elimina el archivo archivo.txt.
  4. cd (o chdir): Cambia el directorio actual.
    • Ejemplo: cd c:\carpeta cambia el directorio actual a c:\carpeta.
  5. cls: Limpia la pantalla.
    • Ejemplo: cls borra todos los comandos y resultados anteriores en la pantalla.
  6. md (o mkdir): Crea un nuevo directorio.
    • Ejemplo: md nueva_carpeta crea una carpeta llamada nueva_carpeta.
  7. rd (o rmdir): Elimina un directorio vacío.
    • Ejemplo: rd carpeta_vacía elimina el directorio carpeta_vacía si está vacío.
  8. ren (o rename): Cambia el nombre de uno o varios archivos.
    • Ejemplo: ren archivo1.txt archivo2.txt cambia el nombre de archivo1.txt a archivo2.txt.
  9. type: Muestra el contenido de un archivo de texto.
    • Ejemplo: type archivo.txt muestra el contenido de archivo.txt.
  10. date: Muestra o cambia la fecha del sistema.
    • Ejemplo: date muestra la fecha actual del sistema y permite cambiarla si se desea.
  11. time: Muestra o cambia la hora del sistema.
    • Ejemplo: time muestra la hora actual y permite modificarla.
  12. ver: Muestra la versión del sistema operativo.
    • Ejemplo: ver muestra la versión de MS-DOS o Windows en uso.
  13. path: Muestra o establece rutas de búsqueda para los comandos ejecutables.
    • Ejemplo: path c:\carpeta agrega c:\carpeta a las rutas de búsqueda de comandos.
  14. pause: Pausa la ejecución de un archivo por lotes hasta que el usuario presione una tecla.
    • Ejemplo: pause muestra el mensaje «Presione una tecla para continuar…».
  15. echo: Muestra mensajes o habilita/deshabilita la visualización de comandos en archivos por lotes.
    • Ejemplo: echo Hola, mundo muestra el mensaje «Hola, mundo».
  16. set: Establece o muestra las variables de entorno.
    • Ejemplo: set nombre=Juan crea una variable de entorno llamada nombre con el valor Juan.
  17. exit: Cierra la sesión de COMMAND.COM o sale de un archivo por lotes.
    • Ejemplo: exit cierra la ventana de DOS o termina la sesión actual.
  18. prompt: Cambia el símbolo del sistema.
    • Ejemplo: prompt $p$g cambia el símbolo del sistema para mostrar la ruta de directorio actual seguido del carácter >.
  19. vol: Muestra la etiqueta y el número de serie de un disco.
    • Ejemplo: vol c: muestra la etiqueta de volumen y número de serie del disco C:.
  20. chkdsk: Verifica un disco y muestra un informe de su estado.
    • Ejemplo: chkdsk c: verifica el estado del disco C:.
  21. attrib: Muestra o cambia los atributos de un archivo (solo lectura, oculto, archivo de sistema, etc.).
    • Ejemplo: attrib +r archivo.txt establece el atributo de solo lectura para archivo.txt.
  22. break: Controla la comprobación de la combinación de teclas Ctrl+C.
    • Ejemplo: break on activa la comprobación de interrupciones por Ctrl+C.
  23. fcbs: Establece el número de File Control Blocks (FCBs) permitidos en la memoria.
    • Ejemplo: fcbs=4 establece que se pueden utilizar 4 FCBS en memoria.
  24. if: Ejecuta comandos condicionales en un archivo por lotes.
    • Ejemplo: if exist archivo.txt echo El archivo existe muestra un mensaje si archivo.txt existe.
  25. goto: Transfiere el control a una etiqueta definida en un archivo por lotes.
    • Ejemplo: goto etiqueta transfiere la ejecución a la línea que contiene :etiqueta.
  26. for: Ejecuta un comando de manera repetitiva para un conjunto de archivos.
    • Ejemplo: for %f in (*.txt) do type %f muestra el contenido de todos los archivos .txt en el directorio actual.
  27. shift: Cambia la posición de los parámetros reemplazables en un archivo por lotes.
    • Ejemplo: shift mueve los parámetros hacia la izquierda en un archivo por lotes, útil en combinación con scripts complejos.
  28. call: Llama a otro archivo por lotes desde dentro de uno ya en ejecución.
    • Ejemplo: call otro_archivo.bat ejecuta el archivo otro_archivo.bat.
  29. subst: Asigna una letra de unidad a una ruta de directorio.
    • Ejemplo: subst z: c:\carpeta asigna la letra de unidad Z: al directorio c:\carpeta.
  30. mem: Muestra información sobre el uso de la memoria del sistema.
    • Ejemplo: mem muestra la cantidad de memoria libre, usada y total del sistema.

Estos son solo algunos de los comandos más importantes en COMMAND.COM. Muchos de ellos fueron fundamentales en los entornos de MS-DOS y primeras versiones de Windows para realizar tareas administrativas, de gestión de archivos y automatización mediante scripts por lotes.

Debido a que estos comandos eran parte de COMMAND.COM, siempre estaban disponibles para el usuario desde el inicio, y se ejecutaban directamente desde el intérprete sin necesidad de buscar en el sistema archivos adicionales.

Comandos externos y su relación con COMMAND.COM

Mientras que los comandos internos estaban integrados en el intérprete, los comandos externos eran ejecutables almacenados como archivos separados en el disco duro. Estos programas ofrecían funcionalidades más avanzadas y específicas que las proporcionadas por los comandos internos. Por ejemplo, comandos como format (para formatear discos) o xcopy (para copiar archivos y directorios de manera recursiva) eran comandos externos que requerían la presencia de sus respectivos archivos en el sistema.

COMMAND.COM era responsable de buscar y ejecutar estos comandos externos cuando el usuario los introducía. Si el archivo correspondiente al comando externo estaba en el sistema y se encontraba en el «path» (ruta de búsqueda), el intérprete lo ejecutaba como cualquier otro comando. De lo contrario, se devolvía un error indicando que el comando no era reconocido.

Limitaciones y legado de COMMAND.COM

COMMAND.COM, aunque esencial en su época, tenía varias limitaciones en comparación con los shells modernos. Por ejemplo, su capacidad para gestionar nombres de archivos largos era limitada, y solo permitía nombres de archivos en el formato 8.3 (ocho caracteres para el nombre y tres para la extensión). Además, no ofrecía muchas de las características avanzadas que se pueden encontrar en shells más modernos, como Bash en Unix y Linux, o PowerShell en versiones más recientes de Windows.

Sin embargo, su legado es indiscutible. COMMAND.COM sentó las bases para el desarrollo de intérpretes de comandos más avanzados y fue una herramienta fundamental para una generación de usuarios y desarrolladores. A pesar de la transición hacia interfaces gráficas y shells más potentes, muchos de los conceptos introducidos por COMMAND.COM, como los archivos por lotes y la estructura básica de comandos, siguen siendo relevantes hoy en día.

Conclusión

COMMAND.COM fue mucho más que un simple intérprete de comandos en la era de MS-DOS y las primeras versiones de Windows. Como la primera interfaz de usuario que muchos usuarios de computadoras personales conocieron, desempeñó un papel fundamental en la forma en que los usuarios interactuaban con sus sistemas. Aunque ha sido reemplazado por tecnologías más avanzadas, su impacto sigue siendo evidente en la computación moderna, y sigue siendo una parte importante de la historia del desarrollo de sistemas operativos.

Suscríbete al boletín SysAdmin

Este es tu recurso para las últimas noticias y consejos sobre administración de sistemas, Linux, Windows, cloud computing, seguridad de la nube, etc. Lo enviamos 2 días a la semana.

Scroll al inicio
×