Quelle est la différence entre «C: FILE.TXT» et «C: \ FILE.TXT»?

13

Quelle est la différence entre " C:FILE.TXT" et " C:\FILE.TXT"?

Sont-ils les mêmes?

VOUS
la source

Réponses:

26

C:FILE.TXTfait référence FILE.TXTdans le répertoire courant du lecteurC:

C:\FILE.TXTfait référence FILE.TXTdans le répertoire racine de drive C:( C:\)

Ils ne sont pas les mêmes.

Modifier: Exemple d'invite de commandes:

Windows se souvient d'un répertoire de travail actuel pour chaque lecteur. Supposons que vous travaillez dans le répertoire C:\UTILS, puis passez au lecteur F:, puis au répertoire BINsur F::

C: \ UTILS> F:
 F: \> CD BIN
 F: \ BIN>

À ce stade, le répertoire de travail actuel pour C:est toujours C:\UTILSet le répertoire de travail actuel pour F:estF:\BIN

Vous pouvez le vérifier avec la CDcommande:

F: \ BIN> CD C:
C: \ UTILS

F: \ BIN>

Notez que vous n'avez pas modifié le lecteur de travail C:en utilisant cette commande.

Comme vous le verrez dans les exemples de commandes suivants, l'utilisation d'une barre oblique inverse ( \) immédiatement après un nom de lecteur ( X:) rend l'emplacement du fichier absolu. Ommiter la barre oblique inverse implique automatiquement le répertoire de travail actuel du lecteur.

F: \ BIN> COPY F: PROGRAM.EXE C:     Copies * F: \ BIN \ PROGRAM.EXE vers C: \ UTILS \ PROGRAM.EXE 
F: \ BIN> COPY F: PROGRAM.EXE C: \    Copies * F: \ BIN \ PROGRAM.EXE vers C: \ PROGRAM.EXE 
F: \ BIN> COPIER F: \ PROGRAM.EXE C:    Copies * F: \ PROGRAM.EXE vers C: \ UTILS \ PROGRAM.EXE

F: \ BIN> COPIE F: PROGRAM.EXE C: NEW \ NEW_PROG.EXE    Copie * et renomme
                                                F: \ BIN \ PROGRAM.EXE
                                                à C: \ BIN \ NEW \ NEW_PROG.EXE
 

* «Copies» signifie «tentatives de copie». Ces commandes échoueront si les structures de répertoires supposées et les répertoires de travail actuels n'existent pas ou sont modifiés par un autre processus.

Dans le cas où le répertoire de travail est le répertoire racine (par exemple. C:\) , Puis C:PROGRAM.EXEet le C:\PROGRAM.EXEpoint au même endroit, mais ils ont été arrivés à par différentes méthodes.

Mike Fitzpatrick
la source
2
En fait, ils peuvent être les mêmes si le répertoire courant de C: est la racine.
Synetech
3
@Synetech; Ce n'est pas parce qu'ils peuvent se référer au même endroit qu'ils sont la même chose
Phoshi
Notez que Windows NT ne suit plus les "répertoires actuels" par lecteur; cette syntaxe n'est désormais utile que dans le cmd.exeshell. Dans d'autres programmes, si un lecteur différent de celui en cours est indiqué, ces spécifications de chemin seront toujours relatives à la racine de ce lecteur.
user1686
@Phoshi, oui, ce sont les mêmes dans certains contextes. C'est comme dire que int xc'est la même chose que int y; ils ne sont pas ===, mais ils peuvent être == si les deux ont la même valeur. @grawity, bien sûr, les applications Windows (Win32, pas seulement NT) n'ont pas de commande par lecteur car cela ne signifierait rien dans ce contexte. Quoi qu'il en soit, ce n'est pas seulement cmd; toutes les applications de console l'ont .
Synetech
@ Mike en fait, après avoir lu la réponse, je ne peux toujours pas faire la différence. pourriez-vous le développer pour un utilisateur stupide?
Pacerier