Замість того, щоб намагатися змінити всі ваші посилання, ви можете скористатися robocopy
з командного рядка скопіювати символічне посилання замість його цілі.
ROBOCOPY source\path destination\path /E /SL
Ця команда буде рекурсивно копіювати всі каталоги та файли з вашого джерела до пункту призначення ( /E
), а замість копіювання цілі символічного посилання скопіює саме посилання ( /SL
)
Ви можете перерахувати всі символічні посилання та цілі за допомогою оболонки повноважень. Ця відповідь на StackExchange показує, як.
dir 'Path\to\examine' -Recurse -Force | ?{$_.LinkType} | Select FullName,LinkType,Target
Ви можете перезаписати наявні посилання також за допомогою посилання shell.
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
значення та запустити це з підказки адміністрування. Ви можете додати -Recurse
прапор до dir
команди, щоб також шукати в папках.