Помилка mklink: неможливо створити файл, коли цей файл вже існує


27

Я намагаюся створити символічне посилання на моїй 64-бітній машині win7 для перенаправлення даних резервного копіювання iTunes на інший диск. Я впевнений, що синтаксис правильний, але не можу зрозуміти, як очистити цю помилку. Я спробував обидві команди нижче, які мають однакову помилку. Я працюю у вікні команд адміністратора. Чи може бути якась корпоративна групова політика, яка заважає мені виконувати цю команду?

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

або

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

Помилка

Неможливо створити файл, коли цей файл вже існує.


який - оригінальний каталог?
Акрам Беркавий

оригінальний каталог - C: \ Users \ odellt1 \ AppData \ Роумінг \ Apple Computer \ MobileSync \ Резервне копіювання
ChiliYago

Чи існує папка, до якої ви посилаєтесь на диску E? Чи існує папка з такою ж назвою, що і посилання, на диску C? Чи форматирується привід E в NTFS?
Гаррі Джонстон

1
Синтаксис правильний, перед виконанням цієї команди виконайте наступні дії. Перемістіть увесь вміст поточної папки резервного копіювання mobilesync в E: \ Apple Computer \ MobileSync \ Backup. Після завершення видаліть порожню резервну папку резервної копії з "C: \ Users \ odellt1 \ AppData \ Roaming \ Apple Computer \ MobileSync". З'єднання можна створити лише в тому випадку, якщо в цьому місці не існує підпапки з тим самим іменем.
Karanvir Kang

Відповіді:


29

синтаксис неправильний. mklinkмає такий синатекс:

mklink [options] <Link> <Target>

Targetце файл / папка, яка існує, і Linkє створеною, що посилається на ціль.

тому команда повинна бути:

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

дивіться це посилання для використання mklink.


Я переглянув документи і, будучи таким коротким, ви могли б подумати, що запустити не буде жодної проблеми. Однак не пощастило, навіть повернення посилання / цілі, як ви пропонуєте, призводить до того ж повідомлення про помилку.
ChiliYago

1
тоді слід перевірити, що папка E: \ Apple Computer \ MobileSync \ Backup не існує
Akram Berkawy

1
Це спрацювало. Я помітив, що видалення повного шляху призвело до помилки: "Система не може знайти вказаний шлях." Тож я відновив шлях і видалив лише останню папку на шляху (резервне копіювання), і тоді вона спрацювала.
ChiliYago

1
Це не правильна відповідь. Це створює simlink, який не перенаправляє iTunes на інший диск. Це робить навпаки - він спрямовує інший диск до папки резервного копіювання iTunes.
Вайден

8

Простий спосіб - видалити папку "Резервне копіювання" в резервній копії оригінальної яблучної папки (в C: \ драйвер) Коли ми запускаємо команду:

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

windows створить ярлик посилання Резервне копіювання у драйвері C: \.


2
Це правильна відповідь, яка робить те, що мав намір зробити ОП
Вайден

4

У мене була така ж проблема з "помилкою вже існує файл", поки я не застосував "% AppData%":

mklink / J "% APPDATA% \ Apple Computer \ MobileSync \ Резервне копіювання" "E: \ iTune Резервні копії"

Розділ створено для C: \ Користувачі \ Ме \ AppData \ Роумінг \ Apple Computer \ MobileSync \ Резервне копіювання << === >> E: \ iTune Резервні копії

Примітка. Переконайтеся, що ви використовуєте прямі лапки, інакше ви отримаєте синтаксичну помилку команди.


Мені подобається цей простий метод, щоб переконатися, що вихідні та цільові папки відсутні перед створенням з'єднання. Створення з'єднання створює вихідну папку, але не цільову папку. Тому мені довелося вручну створити цільову папку і тоді все функціонує так, як очікувалося.
тимото

Це для мене виправлено, але було б добре пояснити, чому% AppData% це виправляє.
Аврейс

2

Я просто хотів додати, що помилка, яку ви згадали у своєму коментарі вище System cannot find the path specified, трапляється, коли ви символічно посилаєтесь на підрівень папки, який не існує в початковому джерелі посилання.

Це означає, що ви не можете зв’язатись

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

націлити

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

Це не спрацює, якщо щонайменше

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

існує як частина джерела посилання. Вам доведеться або посилання

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

до

"g:\programs\some folder1" 

або вам доведеться створити принаймні порожню папку в

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

а потім створити посилання

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

до

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

Це здається помилкою з боку Microsoft, але ця відповідь насправді правильна. Коли ви посилаєтесь C:\fooна E:` for instance, E: \ foo` повинен існувати, щоб CD в C:\foo; однак, коли ви робите компакт-диск, ви розміщуєтесь у E:` -- **not** E: \ foo`. Дякую, що вказав на це, я б ніколи цього не зрозумів.
Qix
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.