web-dev-qa-db-fra.com

Quelle est la différence entre CMD et Invite de commandes dans Windows?

Jusqu'à présent, je n'ai jamais pensé (et jamais observé) que cmd et command sont deux choses différentes. Eh bien, sont-ils?

Regardez cette photo:

enter image description here

En fait, j'ouvre habituellement cmd à partir de la boîte de dialogue Exécuter chaque fois que je souhaite utiliser la ligne de commande (pour Git/VIM). J'ai donc personnalisé la position d'affichage, la police, la couleur, etc. Aujourd'hui, pour la changer, j'ai saisi command dans Exécuter au lieu de cmd et constaté qu'il y avait quelque chose de nouveau sur ma fenêtre. Il a "DOS" dans sa fenêtre.

Donc, évidemment, il devrait y avoir une différence entre cmd et command. J'aimerais savoir

  1. La différence entre eux.
  2. Pourquoi Microsoft les a séparés (Unix et Linux n’ont qu’un seul shell par défaut, Bash).
30
Surya

TL; DR

Lorsque vous exécutez un programme de console 32 bits, il est exécuté par cmd; Lorsque vous exécutez un programme console 16 bits, il est exécuté par command.

Détails

Windows XP inclut un sous-système prenant en charge les applications 16 bits plus anciennes.

Les anciennes applications 16 bits sont disponibles en tant que programmes DOS et Windows. Les programmes DOS sont par nature des applications console et s'exécutent dans ce qui ressemble à l'invite de commande. Cependant, les applications de console Windows 32 bits sont très similaires et se ressemblent.

La commande processeur/interprète cmd a plusieurs objectifs:

  • Pour exécuter le programme console Windows texte 32 bits
  • Pour fournir et gérer diverses fonctions de ligne de commande (dir, copy, etc.)
  • Interpréter et exécuter des fichiers de commandes (fichiers .bat compatibles DOS et fichiers .cmd compatibles NT)

Lorsque vous exécutez un ancien programme de console 16 bits, il est exécuté par le NTVDM (machine virtuelle Windows NT). Il fournit un système DOS émulé (d'où la machine DOS virtuelle ) similaire à l'exécution d'un logiciel de machine virtuelle dédié, à la différence que la couche d'émulation est plus simple. command est une version 16 bits de l'interpréteur de commandes beaucoup plus proche du DOS réel que cmd.exe qui est en fait un programme Windows (et possède l'en-tête Windows PE, contrairement à command.com qui possède l'en-tête DOS MZ).

command a les mêmes objectifs que cmd sauf qu'il ne prend en charge que les programmes 16 bits. En outre, il ne prend pas en charge les fichiers .cmd et comporte moins de commandes intégrées et sa syntaxe est plus limitée (cmd est un interpréteur de ligne de commande plus récent, plus moderne et plus avancé, similaire à . 4DOS ).

Cependant, il prend en charge les programmes DOS graphiques (comme les anciens jeux), mais le succès de leur exécution dépend des pilotes de carte vidéo et de la nature du programme. Il existe de nombreux sites proposant diverses astuces pour que les jeux DOS s'exécutent sous Windows (bien que le succès sur Vista et versions ultérieures soit généralement plus limité que sur XP).

Il convient de noter que les versions 64 bits de Windows ont complètement abandonné la prise en charge des programmes 16 bits et n'incluent donc pas du tout command. Par conséquent, ni les programmes DOS ni Windows 16 bits ne seront exécutés et lanceront plutôt un message (trompeur) message d'erreur .


Notes techniques

command.com possède une extension .com pour la compatibilité ascendante avec les programmes DOS, mais comme la plupart des autres versions Windows de commandes DOS externes, il s’agit en fait d’un fichier Windows PE .exe. Cela donne l’observation intéressante que bien que Windows utilise l’extension comme indicateur de la façon de traiter la plupart des types de fichiers exécutables, il ignore l’extension et examine son contenu (sinon un .exe ne fonctionnerait pas s'il était traité comme un .com). Cette question concerne cet effet.

31
Synetech

Contrairement à COMMAND.COM, qui est un programme DOS, cmd.exe est une application Windows native s'exécutant normalement sur la console Win32. Cela lui permet de tirer parti des fonctionnalités disponibles pour les programmes natifs de la plate-forme qui seraient autrement indisponibles pour les programmes DOS.

également...

Les versions OS/2 et Windows NT de cmd.exe ont des messages d'erreur plus détaillés que la couverture "Commande incorrecte ou nom de fichier" (dans le cas de commandes incorrectes) de command.com.

Cela provient de cet article Wikipedia informatif.

Il est fait mention de la façon dont les anciennes commandes command.com ont été intégrées dans la nouvelle fonctionnalité cmd.exe ... par exemple ...

la fonctionnalité de deltree (command.com) a été convertie en rd (cmd.exe) sous la forme du paramètre/s

Alors, n'hésitez pas à lire.

8
Bon Gart

command.com est le shell DOS fourni pour la compatibilité.

cmd.exe est un programme Win32 natif, hérité de OS/2.

5
kinokijuf