У многих пользователей есть ярлыки, указывающие на различные сетевые ресурсы других систем или сервера хранения вашего домена. Если ваша компания мигрирует сервер и изменила имя компьютера, имя общего ресурса или путь к папке, вам необходимо вручную обновить целевые ярлыки, чтобы они указывали на нужный сервер. Хотя структура папок может оставаться неизменной, имя сервера обычно изменяется.
Для ярлыков, указывающих на файл или папку на локальном компьютере, Windows автоматически обновляет ярлыки (используя службу «Отслеживание распределенных ссылок»), когда цель перемещается или переименовывается. Но в случае ярлыков, указывающих на сетевые местоположения, они должны быть сделаны вручную или с помощью программы / сценария.
Обновление путей вручную является утомительной задачей, особенно если у вас есть сотни ярлыков. Если вы ищете информацию о том, как массово обновлять ярлыки целей, эта статья имеет решение.
Изменить цели ярлыка (.lnk) навалом
Вот скрипт PowerShell, который автоматически обновляет цель ярлыка для файлов .lnk в указанной папке. Этот скрипт автоматически обновляет ярлыки, содержащие старое имя сервера или путь, заменяя их новым именем или путем.
$oldPrefix = "\\MEDIA" $newPrefix = "\\MEDIA-PC" $searchPath = "E:\Shortcuts" $shell = new-object -com wscript.shell write-host "Updating shortcut target" -foregroundcolor red -backgroundcolor black dir $searchPath -filter *.lnk -recurse | foreach { $lnk = $shell.createShortcut( $_.fullname ) $oldPath= $lnk.targetPath $lnkRegex = "^" + [regex]::escape( $oldPrefix ) if ( $oldPath -match $lnkRegex ) { $newPath = $oldPath -replace $lnkRegex, $newPrefix write-host "Found: " + $_.fullname -foregroundcolor yellow -backgroundcolor black write-host " Replace: " + $oldPath write-host " With: " + $newPath $lnk.targetPath = $newPath $lnk.Save() } }
- Скопируйте приведенный выше код в Блокнот и сохраните файл как
lnk_change.ps1
- Убедитесь, что вы вводите старые и новые пути в строках 1 2 выше.
- В строке № 3 укажите папку, в которой хранятся ярлыки, для которых вы хотите обновить путь.
- В диалоговом окне «Выполнить» выполните следующую команду:
powershell -noexit -ExecutionPolicy ByPass -File D:\Scripts\lnk_change.ps1
Это оно. Цели ярлыка теперь обновляются с \\MEDIA
в \\MEDIA-PC
,
- Вы также можете использовать полный путь к ресурсу, например,
\\MEDIA\Shared
а также\\MEDIA-PC\SharedFolder
как «старый» и «новый» пути соответственно. - В случае, если имя сервера такое же, но путь к папке изменился, вы должны ввести полные пути в номерах строк 1 2 соответственно — например,
\\MEDIA\Shared
в\\MEDIA\SharedFolder
Надеюсь, это поможет!