Windows a le concept de chemins actuels par lecteur, du moins dans l'interpréteur de commandes. Cela remonte aux anciens jours où vous travailliez peut-être avec deux disquettes et aviez des dossiers ouverts dans chacune et vous passiez de l'un à l'autre. En réalité, les sous-dossiers n'ont été introduits qu'avec DOS 2.0, je crois, et avant cela il n'y avait que des lecteurs différents et pas de barres obliques inverses et pas de cd
.
Par conséquent, le changement de lecteur se fait de cette manière :
C:\> D:
D:\>
... tandis que le changement d'un des répertoires actuels se fait en utilisant cd
comme ceci :
D:\> cd dossier_relatif
D:\dossier_relatif> cd D:\dossier_absolu
D:\dossier_absolu>
Il est possible de changer de répertoire sur un autre lecteur sans passer à ce lecteur, et c'est ce que vous faisiez accidentellement :
D:\dossier_absolu> cd C:\test
D:\dossier_absolu> C:
C:\test> D:
D:\dossier_absolu>
Il est également possible de faire référence au chemin actuel d'un autre lecteur en spécifiant simplement la lettre du lecteur sans barre oblique inverse :
D:\dossier_absolu> dir C:
Liste des dossiers de C:\test
...
D:\dossier_absolu> dir C:hello
Liste des dossiers de C:\test\hello
...
D:\dossier_absolu> dir C:\
Liste des dossiers de C:\
...
D:\dossier_absolu>
Et la solution à votre problème : Dans les versions modernes de Windows, la commande cd
a un interrupteur /d
pour changer de lecteur implicitement aussi :
D:\dossier_absolu> cd /d C:\quelque_chose
C:\quelque_chose>
Note : les chemins actuels pour chaque lecteur (pour le processus en cours - les chemins actuels sont propres à chaque processus !) sont stockés sous forme de variables d'environnement cachées magiques appelées =C:
, =D:
, etc.
Vous ne pouvez pas les assigner normalement à cause du signe égal, mais vous pouvez les voir en utilisant echo %=C:%
et ainsi de suite, ou en listant toutes les variables d'environnement, y compris les cachées, en utilisant une astuce (notez les guillemets doubles) :
C:\quelque_chose> set "
=C:=C:\quelque_chose
=D:=D:\dossier_absolu
...
Vous pouvez également voir le chemin actuel d'un autre lecteur en utilisant cd
avec une lettre de lecteur sans aucun chemin :
C:\quelque_chose> cd D:
D:\dossier_absolu
C:\quelque_chose>
Pour plus d'informations, consultez ceci : https://blogs.msdn.microsoft.com/oldnewthing/20100506-00/?p=14133
(Notez que en dehors de l'interpréteur de commandes, les programmes n'ont pas à se soucier de cela, car il n'y a qu'un seul répertoire de travail actuel que le système Windows utilisera réellement, pas un par lecteur. Les choses "par lecteur" ne sont qu'une surcouche construite par l'interpréteur de commandes, car cela fonctionnait ainsi depuis DOS.)