Переформатирование файла Windows lnk с помощью автоматического скрипта - PullRequest
3 голосов
/ 05 декабря 2008

Проблема: На диске C имеется куча файлов .lnk, которые указывают на диск J:, но диск J: исчез, и диск P: заменил его. Для того чтобы файлы .lnk продолжали работать, были сделаны различные уловки, но это раздражает, и пришло время просто исправить все.

Используя Ruby, Python, WSH.JScript или Perl, можете ли вы пройтись по всему дереву каталогов файлов .lnk и изменить их так, чтобы они указывали на p: / * вместо j: / *? Как бы вы поступили об этом?

Примечание: Это не совсем неизвестно мне, но я все равно задаю вопрос, потому что API для управления файлами .lnk способами, которые я нашел до сих пор, кажется слишком громоздким, чтобы быть лучшим известный способ сделать это. Это один из тех безразличных вопросов типа «должен быть лучший способ».

Ответы [ 3 ]

4 голосов
/ 05 декабря 2008

В WindowsNT Resource Kit есть утилита командной строки под названием Shortcut.exe, которая, как мне достоверно сообщают, будет работать и под XP / 2000/2003. Вы можете использовать различные ключи командной строки для изменения существующих файлов LNK, чтобы они указывали на новые ярлыки.

Я нашел информацию об этом здесь: http://www.ss64.com/nt/shortcut.html

Я осмелюсь сказать, что не может быть слишком сложно выследить WindowsNT Resource Kit на веб-сайте Microsoft и извлечь его. Это утилита командной строки, поэтому вы должны иметь возможность пакетировать ее, чтобы перебрать все файлы LNK и изменить их так, чтобы они были правильными.

2 голосов
/ 08 ноября 2013

Просто используйте анализатор файлов lnk на J.A.F.A.T. Проект инструментов криминалистического анализа .

См. Lnk-parse-1.0.pl в http://jafat.sourceforge.net

Кажется, что нет никаких зависимостей (и, в частности, не ужасный материал для Windows). Синтаксис прост, и файл ссылок становится простым текстом при стандартном выводе.

2 голосов
/ 31 июля 2009

Мы нашли этот скрипт VB, который отлично работает.

http://www.enterpriseitplanet.com/resources/scripts_win/article.php/3081941

Некоторые предупреждения:

Осторожно! Он запускается из корня диска. Если вы протестируете его на своем компьютере, вы рискуете переназначить все ваши ярлыки Windows - например. те, в вашем меню Пуск! Мы немного отредактировали скрипт, чтобы получить немного больше контроля (в методе Main ()):

   dim onlyFolder
    Set onlyFolder =fso.GetFolder("C:\") 
    SearchFolder onlyFolder

'   for each aDrive in fso.Drives       
'       if aDrive.DriveType = 2 then
'           SearchFolder aDrive.RootFolder
'       end if
'   next

Файл fixlinks.ini не любит пустые строки, он должен быть четным числом строк.

Он работает в фоновом режиме и может отображать ошибки разрешения для сложных каталогов. Трудно сказать, когда он закончился, за исключением окна подтверждения в конце. Вероятно, лучше всего следить за этим в Process Explorer и запускать его из командной оболочки в качестве администратора в Vista / и т. Д.

Кроме того, отлично работал!

...