Windows 7 / Симлинки - Как скопировать Симлинк в каталог?

Можно ли скопировать символическую ссылку в каталог в Windows 7. Когда я пытаюсь скопировать каталог по символической ссылке, он пытается глубоко скопировать содержимое в папку.

8 ответов

Решение

Я не знаю, как сделать это в Windows Explorer, но вы можете использовать xcopy в командной строке с аргументом / b смотрите здесь .

Используйте следующую команду в командной строке с повышенными правами:

xcopy /b /i <source symlink name> <destination symlink name>

Выходные данные: 0 Файл (ы) скопирован, но символическая ссылка создается в месте назначения. Это проверено в Windows 7 и Windows 8.x, но должно работать начиная с Vista

ОБНОВЛЕНИЕ: работает и в Windows 10

Используйте программу, которая поддерживает их, очевидно. Например, Far Manager позволяет мне копировать символические ссылки в виде ссылок или обходить их и копировать их содержимое:

альтернативный текст

Дальний менеджер был единственным, что сработало. Спасибо, Джои.

По какой-то причине расширение Link Shell либо не предоставляет способ скопировать ссылки / соединения sym, либо я слишком глуп, чтобы понять это. Перепробовал все в меню Drop As ...

С помощью Far Manager просто нажмите "Копировать" в нижней части интерфейса, убедившись, что другая панель окна указывает на папку назначения. Это так просто!

Я скопировал всю мою папку пользователя! Некоторые ссылки, которые вы должны исправить впоследствии, например, данные приложения. Если у вас есть Link Shell Extension, просто щелкните правой кнопкой мыши и измените путь в контекстном меню свойств Link. В противном случае они будут указывать на ваш старый диск. Обязательно исправьте те, которые находятся внутри данных приложения, AppData \ Local и Temporary Internet Files. Обязательно ПРИНИМАЙТЕ СОБСТВЕННОСТЬ перед копированием!

Кроме того, вам нужно сделать это, войдя в другой профиль администратора или загрузившись в другую ОС. Если вы загружены в другую ОС, убедитесь, что ссылки указывают на букву диска, которую хочет целевая ОС, а не букву диска, которую хочет текущая ОС. Например, моей целевой ОС является J: \ users \ Me. Мои соединения там указывают на C: \ users \ Me, потому что C: \ - это буква диска, в которую я буду загружаться. (Да, если щелкнуть ссылки сейчас, откроется папка вашей текущей ОС. Не беспокойтесь об этом.)

Есть записи реестра, которые вы должны изменить. Смотрите здесь

Для этого вы можете использовать Link Shell Extension, однако инструкции немного запутаны. (для копирования уже существующих символических ссылок)

инструкции

  1. Используйте служебную программу LSEConfig.exe, чтобы изменить параметр "Внешнее соединение / символическая ссылка" на "Соединение".
  2. Щелкните правой кнопкой мыши и выберите "Выбрать источник ссылки" родительскую папку символьной папки, которую вы хотите скопировать.
  3. Перейдите в родительскую папку того места, куда вы хотите поместить символьную папку, и запустите "Drop As: Smart Copy".
  4. Переименуйте временную родительскую "папку-контейнер" в целевое / реальное имя родительской папки.

Процедура довольно сложна, поэтому я бы рекомендовал вместо нее использовать xcopy или Far Manager. (еще не пробовал их, но я предполагаю, что они более просты для прямого / одиночного копирования папки с символьной связью)

(Однако, на мой взгляд, расширение Link Shell по-прежнему стоит приобрести для упрощенного создания символических ссылок.)

Это было сделано с использованием версии Windows 10 Pro. Тем не менее, я думаю, что это то же самое на Windows 7 и Windows 8.

Во-первых, добавьте возможность создавать символические ссылки для вашей учетной записи пользователя без прав администратора. Это можно найти в локальной политике безопасности (secpol) в разделе "Параметры безопасности> Локальные политики> Назначение прав пользователя> Создать символические ссылки". Добавив своего пользователя без прав администратора к этому параметру прав пользователя, вы можете создавать символические ссылки, разрешение, которое вам нужно, если вы копируете и, следовательно, создаете символическую ссылку.

Затем сделайте это в окне командной строки:

copy /L sourceLocation targetLocation

Также я нашел расширение оболочки, которое может сделать это немного проще.

Это демонстрируется на HowToGeek здесь

А ссылка на расширение самой оболочки здесь

К сожалению, у меня не было возможности протестировать это самостоятельно, потому что мне нужно сделать это на сервере, и я не особо хочу возиться с расширением оболочки на рабочем сервере - но я подумал, что это может быть полезно.

Вот решение в одной строке Python, которое я копирую и вставляю каждый раз, когда оно мне нужно:

      import os, glob, shutil; [shutil.copy(f, '.', follow_symlinks=False) for f in glob.glob(r'c:\src_dir_containing_symlinks\*')]   

Теперь в более читабельном виде:

      SRC = r'c:\test'
DST = '.'

import os, glob, shutil
for f in glob.glob(os.path.join(SRC, '*')):
    shutil.copy(f, DEST, follow_symlinks=False)   
Другие вопросы по тегам