Невозможно создать символическую ссылку - невозможно создать файл, если этот файл уже существует

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, я не могу понять свою ошибку.

  1. Я подумал, что, может быть, мне стоит поменять местами два каталога. Источники, которые я читал, сбивают меня с толку: например, в официальной документации Microsoft говорится о и, которые могут относиться к обоим каталогам в зависимости от того, как вы на это смотрите. Я немного смущен тем, как должны указывать символические ссылки: в моем здравом смысле, но я думаю, что этот синтаксис правильный в соответствии с этой страницей с howtogeek.com.

  2. Я подумал, что, поскольку ошибка в том, что что-то уже существует, мою пустую карту следует удалить, поскольку, может быть, она будет создана? В этом отношении я нахожу этот принятый ответ на superuser.com очень запутанным. Я также видел этот принятый ответ здесь, на stackru.com, в котором говорилось, что целевой каталог не может существовать? Поскольку это место, куда я хочу поместить свои файлы, я нахожу это очень странным. И из другого источника (который я не могу найти так быстро) я понял, что оба каталога уже должны существовать.

  3. Я думал, что карта, на которой я запускал команду, будет неправильной. Однако выполнение команды на один уровень выше этого (то есть внутри "основной папки") также дало мне ошибку; так что попробовал это из местоположения D-drive. Но потом, из вышеупомянутого источника howtogeek.com, я понял, что мне не нужно находиться внутри определенного каталога?

Я также видел много вопросов на этом сайте относительно символических ссылок, но я не нашел ответа, который мог бы мне помочь. Я, вероятно, усложняю вещи здесь, поэтому, если у кого-то есть простое исправление / объяснение, я был бы очень признателен за это:).

2 ответа

Решение

Благодаря @Mofi я разобрался со своими ошибками:

  1. Пустая папка (folder-I-want-linked на моем диске C) пока не должно существовать: оно будет создано при создании ссылки;
  2. Это также означает, что символическая ссылка должна быть сделана из родительского каталога (C:\users\me\documents\main-folder);
  3. Я должен использовать /D вместо того /J.
  4. По какой-то причине указание абсолютного пути к папке, которую я хотел создать, не помогло (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 "файл, который нужно связать" "откуда сделать ссылку"

Другие вопросы по тегам