¿Cuál es la diferencia entre los archivos .cmd y .bat?

Respuestas:

11

Existen diferencias semánticas en el lenguaje de comando utilizado para cada uno (los .batarchivos obtienen una versión de compatibilidad). Algunos de estos pueden ilustrarse con este script desde aquí :

@echo off&setlocal ENABLEEXTENSIONS
call :func&&echo/I'm a cmd||echo/I'm a bat
goto :EOF

:func
md;2>nul
set var=1

Básicamente, los .cmdarchivos obtienen la versión actual y más sexy del lenguaje de comandos de MS, razón por la cual los niños geniales los usan.

caos
fuente
2
<3 scripts de cmd ofuscados :)
grawity
Yeesh! Estoy corregido. Nunca conocí ese comportamiento de CMD.EXE antes.
Evan Anderson
6

De acuerdo con Wikipedia:

.bat: la primera extensión utilizada por Microsoft para archivos por lotes. Esta extensión se puede ejecutar en la mayoría de los sistemas operativos de Microsoft, incluidos MS-DOS y la mayoría de las versiones de Microsoft Windows.

.cmd: la nueva extensión .cmd es descrita por los sistemas basados ​​en Windows NT como un 'Script de comando de Windows NT' y es útil, ya que usar una extensión .cmd en lugar de la extensión .bat significa que las versiones anteriores de Windows no sabrán cómo ejecutarlo, para que no intenten confundir los comandos de los archivos de estilo COMMAND.COM y no puedan ejecutar los nuevos comandos de estilo debido a la falta de extensiones de comandos, lo que da como resultado que los scripts se ejecuten solo parcialmente, lo que podría resultar perjudicial (para ejemplo; no verificar la copia exitosa de un archivo y luego eliminar el original de todos modos).

La única diferencia conocida entre el procesamiento de archivos .cmd y .bat es que en un archivo .cmd la variable ERRORLEVEL cambia incluso en un comando exitoso que se ve afectado por las Extensiones de comando (cuando las Extensiones de comando están habilitadas), mientras que en los archivos .bat la variable ERRORLEVEL cambia solo ante errores.

Espero que esto ayude.

KPWINC
fuente
1

En teoría .cmd es más "verdaderoЪ" :) porque .bat es un script para el antiguo comando.com de DOS, mientras que .cmd es para cmd.exe de Windows NT, el último tiene un script un poco más mejorado. En la vida real, generalmente ambos son iguales, como escribir / bin / sh o / bin / bash en Linux (distribuciones medias donde sh es realmente bash)

disserman
fuente
0

La primera vez que vi el formato .cmd utilizado en OS / 2. Si está pensando en términos de DOS, es como un archivo .bat con esteroides. Los archivos .bat se introdujeron primero en sistemas operativos tipo DOS. Gran parte de la sintaxis es similar, excepto cuando comienza a acceder a funciones avanzadas. Además, un archivo .cmd tiene el potencial de no funcionar en un entorno de 16 bits (win98) mientras que un archivo .bat probablemente funcionará en todos los entornos.

Pete
fuente