Windows dispose du concept de chemins d'accès par lecteur, au moins dans le Shell. Ce concept remonte à l'époque où l'on travaillait avec deux disquettes et où l'on passait d'un dossier à l'autre. En fait, les sous-dossiers n'ont été introduits que dans DOS 2.0, je crois, et avant cela, il n'y avait que des lecteurs différents, pas de barres obliques inverses et pas de cd
.
Par conséquent, la commutation des lecteurs s'effectue de la manière suivante :
C:\> D:
D:\>
...tandis que le changement d'un des répertoires en cours se fait en utilisant cd
comme ceci :
D:\> cd relative_folder
D:\relative_folder> cd D:\absolute_folder
D:\absolute_folder>
Il est possible de modifier le répertoire d'un autre lecteur sans passer par ce lecteur, et c'est ce que vous avez fait accidentellement :
D:\absolute_folder> cd C:\test
D:\absolute_folder> C:
C:\test> D:
D:\absolute_folder>
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:\absolute_folder> dir C:
Directory listing of C:\test
...
D:\absolute_folder> dir C:hello
Directory listing of C:\test\hello
...
D:\absolute_folder> dir C:\
Directory listing of C:\
...
D:\absolute_folder>
Et la solution à votre problème : Dans les systèmes d'exploitation Windows modernes, l'option cd
a un commutateur /d
pour changer implicitement de lecteur :
D:\absolute_folder> cd /d C:\something
C:\something>
Note complémentaire : les chemins d'accès actuels pour chaque lecteur (pour le processus en cours - les chemins d'accès actuels sont par processus !) sont stockés sous forme de variables d'environnement magiques cachées appelées =C:
, =D:
etc.
Vous ne pouvez pas les attribuer normalement en raison du signe égal, mais vous pouvez les visualiser en utilisant la fonction echo %=C:%
et autres, ou en listant toutes les variables d'environnement, y compris celles qui sont cachées, à l'aide d'un hack (notez les doubles guillemets) :
C:\something> set "
=C:=C:\something
=D:=D:\absolute_folder
...
Vous pouvez également voir le chemin d'accès actuel d'un autre lecteur en utilisant la fonction cd
avec une lettre de lecteur sans chemin d'accès :
C:\something> cd D:
D:\absolute_folder
C:\something>
Pour plus d'informations, consultez le site suivant : https://blogs.msdn.microsoft.com/oldnewthing/20100506-00/?p=14133
(Notez qu'en dehors du Shell, les programmes n'ont pas à se préoccuper de cela, car il n'y a qu'un seul répertoire de travail courant que le système Windows utilisera, et non pas un par lecteur. Le système "par lecteur" n'est qu'un élément ajouté par le Shell, car il fonctionne ainsi depuis DOS).