Ошибка mklink: невозможно создать файл, если этот файл уже существует


18

Я пытаюсь создать символическую ссылку на моей 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"

ошибка

Невозможно создать файл, если этот файл уже существует.


какой является исходным каталогом?
Akram Berkawy

исходный каталог - C: \ Users \ odellt1 \ AppData \ Roaming \ Apple Computer \ MobileSync \ Backup
ChiliYago

Существует ли папка, на которую вы ссылаетесь, на диске E? Существует ли папка с тем же именем, что и ссылка, на диске C? Диск E отформатирован в NTFS?
Harry Johnston

Синтаксис правильный, перед запуском этой команды выполните следующие шаги. Переместите все содержимое текущей папки резервного копирования mobilesync в папку E: \ Apple Computer \ MobileSync \ Backup. После этого удалите пустую подпапку резервного копирования из «C: \ Users \ odellt1 \ AppData \ Roaming \ Apple Computer \ MobileSync». Соединение может быть создано только в том случае, если в папке не существует подпапки с тем же именем.
Karanvir Kang

Ответы:


26

синтаксис неверный. 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

Это сработало. Я заметил, что удаление полного пути привело к ошибке: «Система не может найти указанный путь». Таким образом, я восстановил путь и удалил только последнюю папку в пути (Резервное копирование), после чего все заработало.
ChiliYago

1
Это не правильный ответ. Это создает символическую ссылку, которая не перенаправляет iTunes на другой диск. Он делает прямо противоположное - он направляет другой диск в папку резервных копий iTunes.
Vaiden

6

Самый простой способ - удалить папку «Backup» из резервной копии папки «Apple» (в C: \ driver) Когда мы запускаем команду:

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

Windows создаст ссылку на резервное копирование в C: \ driver.


1
Это правильный ответ, который делает то, что хотел сделать ОП
Vaiden

3

У меня была та же проблема с «ошибкой файла уже существует», пока я не использовал «% AppData%»:

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

Соединение создано для C: \ Users \ Me \ AppData \ Roaming \ Apple Computer \ MobileSync \ Backup & lt; === & gt; & gt; E: \ iTune Backups

Примечание: убедитесь, что вы используете прямые кавычки, в противном случае вы получите ошибку синтаксической команды.


Мне нравится этот простой метод, чтобы убедиться, что исходная и целевая папки отсутствуют перед созданием соединения. Создание соединения создает исходную папку, но не целевую папку. Поэтому мне пришлось вручную создать целевую папку, и тогда все работает как положено.
timoto

Это исправило это для меня, но было бы неплохо объяснить, почему% AppData% исправляет это.
Aureis

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` должен существовать для перехода в C:\foo; Однако, когда вы делать CD, вы помещены в E:` -- **not** E: \ Foo`. Спасибо за указание на это, я бы никогда не понял это.
Qix
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.