2

Кто-нибудь знает приложение синхронизации, которое может создавать символические ссылки, а не копировать файлы? Или как будет выглядеть пакетный скрипт (Windows) для этого?

Если сценарий является решением, я хочу рекурсивно искать в дереве папок папки с определенным именем, например «Моя папка», и только «синхронизировать» (создавать ссылки) эти папки.

2 ответа2

2

Итак, я изучил некоторые сценарии cmd и вот что я придумал:

SET target="M:\TEST"
SET filter="Personal"

forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE mkdir %target%\@relpath"
forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE rmdir %target%\@relpath"
forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE mklink /D %target%\@relpath %cd%\@relpath"

Он будет искать все папки с именем "Личные" в текущем каталоге и создавать символические ссылки в целевом каталоге. Мне пришлось сделать некоторые хитрости, чтобы сохранить структуру папок. (Он не хотел создавать символические ссылки в местах, которые еще не существовали.)

Это может быть запутанным, но и программы, которыми я пытаюсь управлять (в данном случае FL Studio).

ОБНОВИТЬ

Этот код сталкивался с проблемами, когда в путях были пробелы. Спустя много часов безумия, вот что, похоже, работает. Да, есть много цитат.

SET target=C:\Program Files\Path With Spaces
SET filter=Personal

forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE mkdir """%target%"""\@relpath"
forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE rmdir """%target%"""\@relpath"
forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE mklink /D """%target%"""\@relpath """%cd%"""\@relpath"
0

xxcopy имеет более 230 переключателей, некоторые из которых предназначены для обработки символических ссылок, как обсуждалось здесь.

Это может синхронизировать ваши символические ссылки. Существует бесплатная версия для личного использования, но она не подходит для автоматизированных сценариев, так как требует ввода данных пользователем (нажмите Y для подтверждения).

XXCOPY

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .