Erreur mklink: impossible de créer un fichier alors que ce fichier existe déjà


27

J'essaie de créer un lien symbolique sur ma machine win7 64 bits pour rediriger les données de sauvegarde iTunes vers un autre lecteur. Je suis presque sûr que la syntaxe est correcte mais je ne comprends pas comment effacer cette erreur. J'ai essayé les deux commandes ci-dessous qui ont la même erreur. J'exécute dans la fenêtre de commande de l'administrateur. Une stratégie de groupe d'entreprise peut-elle m'empêcher d'exécuter cette commande?

mklink /D "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup" "E:\Apple Computer\MobileSync\Backup" 

ou

mklink /J "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup" "E:\Apple Computer\MobileSync\Backup"

Erreur

Impossible de créer un fichier alors que ce fichier existe déjà.


lequel est le répertoire d'origine?
Akram Berkawy

le répertoire d'origine est C: \ Users \ odellt1 \ AppData \ Roaming \ Apple Computer \ MobileSync \ Backup
ChiliYago

Le dossier auquel vous liez sur le lecteur E existe-t-il? Existe-t-il un dossier du même nom que le lien sur le lecteur C? Le lecteur E est-il formaté en NTFS?
Harry Johnston

1
La syntaxe est correcte, avant d'exécuter cette commande, procédez comme suit. Déplacez tout le contenu du dossier de sauvegarde mobilesync actuel vers E: \ Apple Computer \ MobileSync \ Backup. Une fois cela fait, supprimez le sous-dossier de sauvegarde vide de "C: \ Users \ odellt1 \ AppData \ Roaming \ Apple Computer \ MobileSync". Une jonction ne peut être créée que si un sous-dossier du même nom n'existe pas à l'emplacement.
Karanvir Kang,

Réponses:


29

la syntaxe est incorrecte. mklinka le synatx suivant:

mklink [options] <Link> <Target>

Targetest le fichier / dossier qui existe et Linkest celui créé qui est lié à la cible.

donc la commande devrait être:

mklink /D "E:\Apple Computer\MobileSync\Backup"  "C:\Users\odellt1\AppData\Roaming\Apple Computer\MobileSync\Backup"

voir ce lien pour l'utilisation de mklink.


J'ai parcouru la documentation et étant si bref que vous penseriez que ce ne serait pas un problème de courir. Cependant, pas de chance, même inverser le lien / la cible comme vous le suggérez entraîne le même message d'erreur.
ChiliYago

1
alors vous devez vérifier que le dossier E: \ Apple Computer \ MobileSync \ Backup n'existe pas
Akram Berkawy

1
Ça a marché. J'ai remarqué que la suppression du chemin complet entraînait une erreur: "Le système ne peut pas trouver le chemin spécifié." J'ai donc restauré le chemin d'accès et supprimé uniquement le dernier dossier du chemin d'accès (sauvegarde), puis cela a fonctionné.
ChiliYago

1
Ce n'est pas la bonne réponse. Cela crée un simlink, qui ne redirige pas iTunes vers un autre lecteur. Il fait exactement le contraire - il dirige un autre lecteur vers le dossier de sauvegarde iTunes.
Vaiden

8

La manière la plus simple est de supprimer le dossier de sauvegarde dans la sauvegarde du dossier Apple d'origine (dans C: \ driver) Lorsque nous exécutons la commande:

mklink /J "%APPDATA%\Apple Computer\MobileSync\Backup" "E:\iTune Backups"

Windows créera un raccourci de lien de sauvegarde dans le pilote C: \.


2
Ceci est la bonne réponse qui fait ce que l'OP voulait faire
Vaiden

4

J'ai eu le même problème avec «l'erreur de fichier existe déjà», jusqu'à ce que j'utilise «% AppData%»:

mklink / J "% APPDATA% \ Apple Computer \ MobileSync \ Backup" "E: \ iTune Backups"

Jonction créée pour C: \ Users \ Me \ AppData \ Roaming \ Apple Computer \ MobileSync \ Backup << === >> E: \ iTune Backups

Remarque: assurez-vous d'utiliser des guillemets droits, sinon vous obtenez une erreur de commande de syntaxe.


J'aime cette méthode simple pour m'assurer que les dossiers source et cible ne sont pas présents avant de créer la jonction. La création de la jonction crée le dossier source, mais pas le dossier cible. J'ai donc dû créer manuellement le dossier cible, puis tout fonctionne comme prévu.
timoto

Cela m'a corrigé, mais ce serait bien d'avoir une explication sur la raison pour laquelle% AppData% le corrige.
Aureis

2

Je voulais juste ajouter que l'erreur que vous avez mentionnée dans votre commentaire ci-dessus System cannot find the path specifiedsemble se produire lorsque vous effectuez une liaison symbolique à un sous-niveau de dossier qui n'existe pas à la source d'origine du lien.

Ce qui signifie que vous ne pouvez pas lier

"c:\program files (x86)\some folder1\some folder2\"

cibler

"d:\programs\some folder1\some folder2\"

Cela ne fonctionnera que si au moins

"c:\program files (x86)\some folder1"

existe dans le cadre de la source du lien. Vous devrez soit lier

"c:\program files (x86)\some folder1"

à

"g:\programs\some folder1" 

ou vous devrez créer au moins un dossier vide à

"c:\program files (x86)\some folder1"

puis créer le lien

"c:\program files (x86)\some folder1\some folder2" 

à

"g:\programs\some folder1\some folder2"

Cela semble être un bug de la part de Microsoft, mais cette réponse est en fait correcte. Lorsque vous créez un lien C:\foovers E:` for instance, E: \ foo` doit exister pour se connecter au CD C:\foo; cependant, lorsque vous faites un cd, vous êtes placé dans E:` -- **not** E: \ foo`. Merci de l'avoir signalé, je ne l'aurais jamais compris.
Qix
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.