Diferencias entre los archivos .bat y .cmd de Windows Batch

Siddharth Bishnoi 30 enero 2023
  1. Diferencias entre COMMAND.COM y cmd.exe
  2. Diferencias clave entre los archivos de Windows Batch .bat y .cmd
  3. Conclusión
Diferencias entre los archivos .bat y .cmd de Windows Batch

Los usuarios a menudo consideran que COMMAND.COM y cmd.exe son lo mismo. Además, están confundidos acerca de qué extensión usar para los archivos Batch, .bat o .cmd.

¿Son iguales o diferentes, e importa qué extensiones usar? La respuesta a todas estas preguntas se discute en este artículo.

Cuando ejecutamos archivos Batch, se ejecutan en el símbolo del sistema. Los archivos Batch se ejecutan principalmente en cmd.exe en versiones de Windows NT.

En versiones anteriores, se ejecutará en el shell COMMAND.COM.

Diferencias entre COMMAND.COM y cmd.exe

COMMAND.COM y cmd.exe son versiones del intérprete de comandos para MS-DOS y Windows. COMMAND.COM es un shell de línea de comandos diseñado para ejecutar programas de 16 bits; es un programa de DOS donde es el primero en ejecutarse después del arranque que configura el sistema ejecutando el archivo de configuración AUTOEXEC.BAT.

Fue lanzado inicialmente en 1980 para MS-DOS, Windows 95-98 y Windows ME. Solo es compatible y útil para programas más antiguos diseñados para ejecutarse como programas de 16 bits y no se ha actualizado desde entonces.

comando.com

El cmd.exe, por otro lado, es un sucesor de COMMAND.COM. Está diseñado para programas de 32 bits y se lanzó en 1987 para OS/2, Windows NT y Windows CE.

En comparación con COMMAND.COM, cmd.exe proporciona mejores extensiones, como mensajes de error detallados, admite teclas de flecha para verificar el historial de comandos, admite la expansión variable retrasada y ha mejorado los comandos internos.

cmd.exe

Un archivo Batch es un archivo de secuencia de comandos que puede almacenar comandos y ejecutarlos en orden de serie mediante el intérprete de línea de comandos. La extensión de nombre de archivo .bat se usa en MS-DOS y Windows, y fue la primera extensión que se usó para los archivos Batch, mientras que .cmd se usa en la familia Windows NT y OS/2.

Los archivos .cmd solo se pueden ejecutar en cmd.exe ya que COMMAND.COM no reconoce esta extensión.

Este tutorial ilustrará las diferencias clave entre los archivos .bat y .cmd.

Diferencias clave entre los archivos de Windows Batch .bat y .cmd

Las diferencias clave esenciales entre .bat y .cmd se analizan a continuación.

Manejo de NIVEL DE ERROR

El .bat y .cmd manejan la variable ERRORLEVEL de manera diferente. Cuando se llama a un ERRORLEVEL, .bat cambia de estado solo cuando se produce un error real, es decir, para comandos como append, dpath, ftype, set, path, assoc, .bat no establecerá el NIVEL DE ERROR.

Pero, en el caso de .cmd, establecerá el NIVEL DE ERROR independientemente de un error real. Restablecerá el NIVEL DE ERROR a 0 incluso después de una ejecución exitosa.

A veces, crea confusión al escribir un script, por lo que los usuarios deben tener cuidado con esto.

Orden de ejecución

Una variable de entorno PATHEXT controla el orden de ejecución. La ejecución depende del orden de las variables almacenadas en la variable PATHEXT.

Si los scripts .bat y .cmd están almacenados en la misma carpeta, ejecutar el script sin extensión ejecutará primero el archivo .bat, seguido del archivo .cmd. El orden por defecto de la variable PATHEXT es el siguiente:

ECHO %PATHEXT%

variable de texto de ruta

Sin embargo, puede cambiar el orden de las extensiones en la variable PATHEXT. Incluso si elimina la variable PATHEXT, el orden será el mismo que la versión MS-DOS de Windows.

Apoyo

En cuanto al soporte para las versiones de Windows, los archivos .cmd son compatibles con casi todas las versiones de Windows, que no es lo mismo que en el caso de los archivos .bat. .bat se desarrolló inicialmente para MS-DOS, mientras que .cmd se desarrolló para Windows NT, por lo que los archivos .cmd no se ejecutan en sistemas que no sean Windows NT.

El scripting para .bat es más antiguo en comparación con .cmd. Y .cmd es compatible con versiones anteriores en comparación con los archivos .bat.

Seguridad

En cuanto a la seguridad, .cmd es más seguro que .bat. Debido a que los comandos en un archivo .bat se almacenan en serie y ejecuta comandos línea por línea, es más propenso a sufrir ataques de seguridad. Los archivos .cmd no ejecutan comandos secuencialmente, lo que los hace más seguros que los archivos .bat.

Los archivos .cmd también se pueden usar en Android a través de una aplicación que permite ver, instalar y ejecutar archivos .cmd. Los archivos .bat no son compatibles con Android.

Idioma

Los archivos .bat tienen una versión anterior del lenguaje de Microsoft, ya que se desarrolló anteriormente para MS-DOS. .cmd es un lenguaje de programación e intérprete desarrollado para las versiones más recientes de Windows.

Cuando ejecuta un archivo Batch sin ninguna extensión, se ejecutará como .bat, mientras que, para la extensión de archivo .cmd, debe ingresar el nombre del archivo como filename.cmd. Este caso se aplica solo cuando ambas extensiones tienen el mismo nombre de archivo; .cmd necesita proporcionar extensiones para ejecutar los archivos, mientras que los archivos .bat ejecutan directamente el programa sin necesidad de extensiones.

Como se muestra en la imagen a continuación, tenemos dos archivos Batch con el mismo nombre de archivo testfile y diferentes extensiones .bat y .cmd. El archivo .bat se almacena como archivo Batch de Windows y .cmd como secuencia de comandos de Windows.

archivos Batch con el mismo nombre de archivo

Ejecutando el archivo .bat:

ejecutando el archivo bat

Ejecutando el archivo .cmd:

ejecutando el archivo cmd

Ambiente de trabajo

Los archivos .bat fueron diseñados para ejecutarse en un entorno NTVDM, un proceso de Windows para ejecutar programas de 16 bits en Windows de 32 bits. NTVDM significa Windows NT Virtual DOS Machine, ejecutado como ntvdm.exe.

Es un programa importante para el sistema, que no debe eliminarse para el funcionamiento estable de los programas. Los archivos .bat se ejecutan en este entorno y, por lo tanto, son compatibles con todos los entornos, mientras que los archivos .cmd no se pueden ejecutar en entornos de 16 bits.

Además, los archivos .cmd se almacenan en la memoria antes de la ejecución, mientras que los archivos .bat ejecutan comandos línea por línea sin almacenarlos en la memoria.

Interprete

Los archivos Batch con la extensión de archivo .bat se pueden ejecutar tanto en COMMAND.COM como en cmd.exe, aunque ambos intérpretes ejecutarán el archivo de manera diferente. Los archivos .cmd solo se ejecutan en cmd.exe.

La variable de entorno COMSPEC se utiliza para iniciar el intérprete de línea de comandos para archivos Batch. De forma predeterminada, está configurado en COMMAND.COM para versiones anteriores como MS-DOS.

A partir de Windows NT, el valor predeterminado es cmd.exe. Para ver su contenido, ejecute el siguiente comando:

ECHO %COMSPEC%

variable de especificación de componentes

Por lo tanto, las versiones más nuevas de Windows se ejecutarán en cmd.exe. Pero en versiones anteriores, solo se ejecutarán archivos .bat.

Conclusión

Entonces, hemos discutido las diferencias clave esenciales entre las extensiones de archivo Batch .bat y .cmd. Ambos tienen sus ventajas uno sobre el otro.

Para concluir, todo lo que funciona en un archivo .bat también debería funcionar en un archivo .cmd. Los archivos .cmd son más rápidos y estables que los archivos .bat.

El uso de la extensión correcta depende de sus requisitos. Sin embargo, se recomienda utilizar la extensión de archivo .cmd para las versiones más recientes.

Artículo relacionado - Batch CMD