Вместо того, чтобы пытаться изменить все ваши ссылки, вы можете использовать robocopy
из командной строки, чтобы скопировать символическую ссылку вместо ее цели.
ROBOCOPY source\path destination\path /E /SL
Эта команда рекурсивно скопирует все каталоги и файлы из вашего источника в пункт назначения (/E
) и вместо копирования цели вашей символической ссылки, она скопирует саму ссылку (/SL
)
Вы можете перечислить все свои символические ссылки и цели с PowerShell. Этот ответ на StackExchange показывает, как.
dir 'Path\to\examine' -Recurse -Force | ?{$_.LinkType} | Select FullName,LinkType,Target
Вы можете перезаписать существующие ссылки также с помощью powershell.
New-Item -ItemType SymbolicLink -Path "Symbolic\Link\Path" -Target "New\Target\For\Link" -Force
Так что скрипт для модификации всех ссылок в папке будет выглядеть так:
$directory = 'Path\to\your\links'
$links = dir '$directory' -Force | ?{$_.LinkType}
foreach ($link in $links)
{
$target = $link.Target.Replace('C:\','G:\')
$path = $link.FullName
New-Item -ItemType SymbolicLink -Path "$path" -Target "$target" -Force
}
dir '$directory' -Force | ?{$_.LinkType} | Format-Table FullName,Target
Обязательно измените значение $directory
и запустите его из командной строки admin powershell. Вы можете добавить флаг -Recurse
к команде dir
чтобы также просматривать вложенные папки.