Diferencias entre los archivos .bat y .cmd de Windows Batch
-
Diferencias entre
COMMAND.COM
ycmd.exe
-
Diferencias clave entre los archivos de Windows Batch
.bat
y.cmd
- Conclusión
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.
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.
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%
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.
Ejecutando el archivo .bat
:
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%
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.