Différences entre les fichiers Windows Batch .bat et .cmd
-
Différences entre
COMMAND.COM
etcmd.exe
-
Principales différences entre les fichiers Windows Batch
.bat
et.cmd
- Conclusion
Les utilisateurs considèrent souvent COMMAND.COM
et cmd.exe
comme identiques. De plus, ils ne savent pas quelle extension utiliser pour les fichiers Batch, .bat
ou .cmd
.
Sont-ils identiques ou différents, et les extensions à utiliser sont-elles importantes ? La réponse à toutes ces questions est discutée dans cet article.
Lorsque nous exécutons des fichiers batch, ils sont exécutés dans l’invite de commande. Les fichiers batch sont principalement exécutés dans cmd.exe
dans les versions de Windows NT.
Dans les anciennes versions, il s’exécutera dans le shell COMMAND.COM
.
Différences entre COMMAND.COM
et cmd.exe
COMMAND.COM
et cmd.exe
sont des versions de l’interpréteur de commandes pour MS-DOS et Windows. COMMAND.COM
est un shell de ligne de commande conçu pour exécuter des programmes 16 bits ; c’est un programme DOS où il est le premier à s’exécuter après le démarrage qui configure le système en exécutant le fichier de configuration AUTOEXEC.BAT
.
Il a été initialement publié en 1980 pour MS-DOS, Windows 95-98 et Windows ME. Il n’est compatible et utile que pour les programmes plus anciens conçus pour s’exécuter en tant que programmes 16 bits et n’a pas été mis à jour depuis lors.
Le cmd.exe
, quant à lui, est le successeur de COMMAND.COM
. Il est conçu pour les programmes 32 bits et a été publié en 1987 pour OS/2, Windows NT et Windows CE.
Par rapport à COMMAND.COM
, cmd.exe
fournit de meilleures extensions telles que des messages d’erreur détaillés, prend en charge les touches fléchées pour vérifier l’historique des commandes, prend en charge l’expansion des variables retardées et a amélioré les commandes internes.
Un fichier batch est un fichier de script qui peut stocker des commandes et les exécuter dans l’ordre série par l’interpréteur de ligne de commande. L’extension de nom de fichier .bat
est utilisée dans MS-DOS et Windows, et c’était la première extension utilisée pour les fichiers Batch, alors que .cmd
est utilisé dans la famille Windows NT et OS/2.
Les fichiers .cmd
ne peuvent être exécutés que dans cmd.exe
car COMMAND.COM
ne reconnaît pas cette extension.
Ce tutoriel illustrera les principales différences entre les fichiers .bat
et .cmd
.
Principales différences entre les fichiers Windows Batch .bat
et .cmd
Les principales différences essentielles entre .bat
et .cmd
sont décrites ci-dessous.
Gestion du NIVEAU D’ERREUR
Les .bat
et .cmd
gèrent différemment la variable ERRORLEVEL. Lorsqu’un ERRORLEVEL
est appelé, .bat
ne change d’état que lorsqu’une erreur réelle se produit, c’est-à-dire pour des commandes telles que append
, dpath
, ftype
, set
, path
, assoc
, .bat
ne fixera pas l’ERRORLEVEL.
Mais, dans le cas de .cmd
, il définira le ERRORLEVEL indépendamment d’une erreur réelle. Il réinitialisera ERRORLEVEL à 0 même après une exécution réussie.
Parfois, cela crée de la confusion lors de l’écriture d’un script, les utilisateurs doivent donc faire attention à cela.
Ordre d’exécution
Une variable d’environnement PATHEXT
contrôle l’ordre d’exécution. L’exécution dépend de l’ordre des variables stockées dans la variable PATHEXT
.
Si les deux scripts .bat
et .cmd
sont stockés dans le même dossier, l’exécution du script sans extension exécutera d’abord le fichier .bat
, suivi du fichier .cmd
. L’ordre par défaut de la variable PATHEXT
est le suivant :
ECHO %PATHEXT%
Cependant, vous pouvez changer l’ordre des extensions dans la variable PATHEXT
. Même si vous supprimez la variable PATHEXT
, l’ordre sera le même que la version MS-DOS de Windows.
Soutien
Concernant la prise en charge des versions de Windows, les fichiers .cmd
sont pris en charge dans presque toutes les versions de Windows qui ne sont pas les mêmes que dans le cas des fichiers .bat
. .bat
a été initialement développé pour MS-DOS, tandis que .cmd
a été développé pour Windows NT, de sorte que les fichiers .cmd
ne s’exécutent pas sur des systèmes autres que Windows NT.
Le script pour .bat
est plus ancien que .cmd
. Et .cmd
est rétrocompatible par rapport aux fichiers .bat
.
Sécurité
Concernant la sécurité, .cmd
est plus sûr que .bat
. Étant donné que les commandes d’un fichier .bat
sont stockées de manière sérielle et qu’il exécute les commandes ligne par ligne, il est plus sujet aux attaques de sécurité. Les fichiers .cmd
n’exécutent pas les commandes de manière séquentielle, ce qui les rend plus sûrs que les fichiers .bat
.
Les fichiers .cmd
peuvent également être utilisés dans Android via une application qui permet de visualiser, d’installer et d’exécuter des fichiers .cmd
. Les fichiers .bat
ne sont pas pris en charge dans Android.
Langue
Les fichiers .bat
ont une ancienne version du langage Microsoft car il a été développé plus tôt pour MS-DOS. .cmd
est un langage de programmation et un interpréteur développé pour les nouvelles versions de Windows.
Lorsque vous exécutez un fichier Batch sans aucune extension, il s’exécutera en tant que .bat
alors que, pour l’extension de fichier .cmd
, vous devez entrer le nom de fichier sous la forme filename.cmd
. Ce cas s’applique uniquement lorsque les deux extensions ont le même nom de fichier ; .cmd
doit fournir des extensions pour exécuter les fichiers tandis que les fichiers .bat
exécutent directement le programme sans avoir besoin d’extensions.
Comme le montre l’image ci-dessous, nous avons deux fichiers Batch avec le même nom de fichier testfile
et différentes extensions .bat
et .cmd
. Le fichier .bat
est stocké en tant que fichier batch Windows et .cmd
en tant que script de commande Windows.
Exécution du fichier .bat
:
Exécution du fichier .cmd
:
Environnement de travail
Les fichiers .bat
ont été conçus pour fonctionner dans un environnement NTVDM, un processus Windows permettant d’exécuter des programmes 16 bits sur Windows 32 bits. NTVDM signifie Windows NT Virtual DOS Machine, exécuté en tant que ntvdm.exe
.
C’est un programme important pour le système, qui ne doit pas être supprimé pour le fonctionnement stable des programmes. Les fichiers .bat
s’exécutent dans cet environnement et sont donc pris en charge dans tous les environnements, alors que les fichiers .cmd
ne peuvent pas s’exécuter dans les environnements 16 bits.
De plus, les fichiers .cmd
sont stockés en mémoire avant l’exécution, alors que les fichiers .bat
exécutent les commandes ligne par ligne sans les stocker en mémoire.
Interprète
Les fichiers batch avec l’extension de fichier .bat
peuvent être exécutés sous COMMAND.COM
et cmd.exe
, bien que les deux interpréteurs exécutent le fichier différemment. Les fichiers .cmd
ne s’exécutent que dans cmd.exe
.
La variable d’environnement COMSPEC
permet de lancer l’interpréteur de ligne de commande pour les fichiers Batch. Par défaut, il est défini sur COMMAND.COM
pour les anciennes versions telles que MS-DOS.
À partir de Windows NT, il s’agit par défaut de cmd.exe
. Pour afficher son contenu, exécutez la commande suivante :
ECHO %COMSPEC%
Ainsi, les nouvelles versions de Windows fonctionneront dans cmd.exe
. Mais dans les anciennes versions, seuls les fichiers .bat
seront exécutés.
Conclusion
Nous avons donc discuté des principales différences essentielles entre les extensions de fichiers batch .bat
et .cmd
. Les deux ont leurs avantages l’un par rapport à l’autre.
Pour conclure, tout ce qui fonctionne dans un fichier .bat
devrait également fonctionner dans un fichier .cmd
. Les fichiers .cmd
sont plus rapides et plus stables que les fichiers .bat
.
L’utilisation de la bonne extension dépend de vos besoins. Mais, il est recommandé d’utiliser l’extension de fichier .cmd
pour les versions plus récentes.