web-dev-qa-db-fra.com

Pourquoi "cd D:" ne modifie-t-il pas le contexte de la commande en D :?

doublon possible:
Utilisation de la commande cd dans la ligne de commande Windows, impossible de naviguer vers D:\

Chaque fois que je souhaite modifier le contexte du répertoire sur un autre lecteur (D, E, F ou autre ..) à l'invite de commande Windows, je dois utiliser la commande "Drive letter":\ pour le modifier. Si j'essaie avec "commande cd" sur cd H:\, cela fait simplement écho à H:\pour moi et ne fait rien:

Enter image description here

Y a-t-il une raison pour un tel comportement? Je veux dire, ne devrait pas cd command travailler pour faire ça? Pourquoi pas

18
Diogo

Essayer:

cd /d d:

/d changera également les lettres de lecteur et les répertoires; pour plus d'informations, voir cd /?

27
jftuga

La raison pour laquelle Windows se comporte de cette façon est que DOS se comporte de cette façon.

Sous DOS, chaque lecteur a son propre répertoire actuel et la commande cd modifie le répertoire actuel sur un lecteur. S'il s'agit également du lecteur actuel , votre répertoire de travail change en même temps. Si vous souhaitez modifier le lecteur actuel, vous devez simplement spécifier la lettre de lecteur sous forme de commande.

Remarquez que Windows ne fonctionne plus de cette façon - vous n’avez qu’un seul répertoire actif à la fois - mais la commande Shell s’efforce de prétendre qu’il en existe toujours. répertoires actuels par lecteur. On présume que cela vise à préserver la compatibilité avec les fichiers de commandes DOS existants.

La raison pour laquelle DOS fonctionne de cette manière remonte aux toutes premières versions de DOS, et à CP/M avant celle-ci. Les détails sanglants peuvent être trouvés sur le blog de Raymond Chen .

12
KutuluMike

La réponse directe est que "parce que ce n'est pas écrit pour fonctionner de cette façon". Il suffit de saisir D: pour faire ce que vous voulez.

Entrer curieusement cd D:\somedir changera en fait le répertoire en cours sur D: en\data, mais ne changera pas la commande en cours Invite en D :.

6
uSlackr