Невозможно создать символическую ссылку - невозможно создать файл, если этот файл уже существует
TL; DR; При выполнении приведенной ниже команды я получаю сообщение об ошибке "Невозможно создать файл, если этот файл уже существует". Меня очень смущает все, что я читаю по символическим ссылкам, поскольку в основном всегда неясно, какой каталог является каким и должны ли уже существовать оба или один из имеющихся каталогов. Итак, я разместил свою команду ниже и надеюсь, что кто-нибудь сможет обнаружить ошибку (и объяснить ее простыми словами):).
Недавно мой диск C (SSD) был заполнен, и я решил переместить некоторые вещи на свой диск D (обычный жесткий диск). Я читал о символических ссылках и пытался связать каталог с C:\ на D:, но всегда получаю ошибку "Невозможно создать файл, когда этот файл уже существует". Моя команда следующая:
C:\users\me\documents\main-folder\folder-I-want-linked > mklink /J "D:\folder\another folder\folder-where-I-want-to-store-the-docs" "C:\users\me\documents\main-folder\folder-I-want-linked"
Хотя я начинающий программист и кое-что знаю о CLI, я не могу понять свою ошибку.
Я подумал, что, может быть, мне стоит поменять местами два каталога. Источники, которые я читал, сбивают меня с толку: например, в официальной документации Microsoft говорится о и, которые могут относиться к обоим каталогам в зависимости от того, как вы на это смотрите. Я немного смущен тем, как должны указывать символические ссылки: в моем здравом смысле, но я думаю, что этот синтаксис правильный в соответствии с этой страницей с howtogeek.com.
Я подумал, что, поскольку ошибка в том, что что-то уже существует, мою пустую карту следует удалить, поскольку, может быть, она будет создана? В этом отношении я нахожу этот принятый ответ на superuser.com очень запутанным. Я также видел этот принятый ответ здесь, на stackru.com, в котором говорилось, что целевой каталог не может существовать? Поскольку это место, куда я хочу поместить свои файлы, я нахожу это очень странным. И из другого источника (который я не могу найти так быстро) я понял, что оба каталога уже должны существовать.
Я думал, что карта, на которой я запускал команду, будет неправильной. Однако выполнение команды на один уровень выше этого (то есть внутри "основной папки") также дало мне ошибку; так что попробовал это из местоположения D-drive. Но потом, из вышеупомянутого источника howtogeek.com, я понял, что мне не нужно находиться внутри определенного каталога?
Я также видел много вопросов на этом сайте относительно символических ссылок, но я не нашел ответа, который мог бы мне помочь. Я, вероятно, усложняю вещи здесь, поэтому, если у кого-то есть простое исправление / объяснение, я был бы очень признателен за это:).
2 ответа
Благодаря @Mofi я разобрался со своими ошибками:
- Пустая папка (
folder-I-want-linked
на моем диске C) пока не должно существовать: оно будет создано при создании ссылки; - Это также означает, что символическая ссылка должна быть сделана из родительского каталога (
C:\users\me\documents\main-folder
); - Я должен использовать
/D
вместо того/J
. - По какой-то причине указание абсолютного пути к папке, которую я хотел создать, не помогло (
C:\...\...\folder-I-want-linked
), однако относительный путь от моего текущего местоположения (так простоfolder-I-want-linked
) сделал.
Правильный синтаксис для моего примера:
C:\users\me\documents\main-folder> mklink /D "folder-I-want-linked" "D:\folder\another folder\folder-where-I-want-to-store-the-docs"
просто перейдите в каталог, из которого должна быть создана ссылка, затем удалите файл, на который нужно создать ссылку, затем запустите mklink /D "файл, который нужно связать" "откуда сделать ссылку"