Différences entre les fichiers Windows Batch .bat et .cmd

Siddharth Bishnoi 30 janvier 2023
  1. Différences entre COMMAND.COM et cmd.exe
  2. Principales différences entre les fichiers Windows Batch .bat et .cmd
  3. Conclusion
Différences entre les fichiers Windows Batch .bat et .cmd

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.

command.com

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.

cmd.exe

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%

variable de chemin d’accès

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.

fichiers batch avec le même nom de fichier

Exécution du fichier .bat :

fichier bat en cours d’exécution

Exécution du fichier .cmd :

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%

variable compspec

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.

Article connexe - Batch CMD