Quelle est la différence entre les fichiers .cmd et .bat?

28

Juste curieux. Les gens "sympas" de notre entreprise utilisent toujours * .cmd alors que personne ne m'a expliqué la différence.

Artem Tikhomirov
la source

Réponses:

11

Il existe des différences sémantiques dans le langage de commande utilisé pour chacun (les .batfichiers ont une version compatible). Certains d'entre eux peuvent être illustrés par ce script d' ici :

@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

Fondamentalement, les .cmdfichiers obtiennent la version actuelle et plus sexy du langage de commande MS, c'est pourquoi les enfants cool les utilisent.

le chaos
la source
2
<3 scripts cmd obscurcis :)
grawity
Yeesh! Je me suis trompé. Je n'ai jamais connu ce comportement de CMD.EXE auparavant.
Evan Anderson
6

Selon Wikipedia:

.bat: la première extension utilisée par Microsoft pour les fichiers batch. Cette extension peut être exécutée dans la plupart des systèmes d'exploitation Microsoft, y compris MS-DOS et la plupart des versions de Microsoft Windows.

.cmd: la nouvelle extension .cmd est décrite par les systèmes basés sur Windows NT comme un «script de commande Windows NT» et est utile, car l'utilisation d'une extension .cmd plutôt que d'une extension .bat signifie que les versions antérieures de Windows ne sauront pas comment exécutez-le, afin qu'ils n'essaient pas de confondre les commandes avec les fichiers de style COMMAND.COM et ne parviennent pas à exécuter les nouvelles commandes de style en raison du manque d'extensions de commande, ce qui entraîne l'exécution partielle des scripts, ce qui pourrait s'avérer dommageable (pour exemple; échec de la vérification de la copie réussie d'un fichier, puis suppression de l'original de toute façon).

La seule différence connue entre le traitement des fichiers .cmd et .bat est que dans un fichier .cmd la variable ERRORLEVEL change même sur une commande réussie qui est affectée par les extensions de commande (lorsque les extensions de commande sont activées), tandis que dans les fichiers .bat la variable ERRORLEVEL ne change qu'en cas d'erreur.

J'espère que cela t'aides.

KPWINC
la source
1

En théorie, .cmd est plus "vrai" :) parce que .bat est un script pour l'ancien command.com DOS tandis que .cmd est pour cmd.exe de Windows NT, le dernier a un script un peu plus amélioré. Dans la vie réelle, les deux sont généralement égaux, comme l'écriture de / bin / sh ou / bin / bash sous Linux (signifie les distributions où sh est en fait bash)

disserman
la source
0

J'ai vu pour la première fois le format .cmd utilisé sous OS / 2. Si vous pensez en termes DOS, c'est comme un fichier .bat sur les stéroïdes. Les fichiers .bat ont d'abord été introduits sous les OS de type DOS. Beaucoup de la syntaxe est similaire, sauf lorsque vous commencez à entrer dans les fonctions avancées. En outre, un fichier .cmd a le potentiel de ne pas fonctionner dans un environnement 16 bits (win98) alors qu'un fichier .bat fonctionnera probablement dans tous les environnements.

Pete
la source