вторник, 30 октября 2012 г.

Используем Python для редактирования ярлыков (Перевод)


Некоторое время назад я писал о том, как можно создавать ярлыки для программ в Windows. Это всё хорошо, но иногда нам приходится обновлять программы, что может быть связано с изменением пути к программе, а в таком случае надо и поменять к ней ярлык. К сожалению, многие пользователи часто меняют имя ярлыка, так что найти его становится тяжело. Однако, как всегда Python облегчает эту задачу и я покажу как.

Для этого скрипта нам нужен Python 2.4-3.x, PyWin32 модуль и модуль Tim Golden’а winshell. Теперь давайте взглянем на код:
import glob
import win32com.client
import winshell
 
paths = glob.glob(winshell.desktop() + "\\*.lnk")
 
shell = win32com.client.Dispatch("WScript.Shell")
old_program_path = r"\\SomeUNC\path\old.exe"
 
# ищем старые ярлыки и изменяем, если надо, путь к программе
for path in paths:
    shortcut = shell.CreateShortCut(path)
    target = shortcut.Targetpath
    if target == old_program_path:
        shortcut.Targetpath = r"\\newUNC\path\new.exe"
        shortcut.save()
Во-первых, мы импортируем модули glob, win32com.client и winshell. Затем создаём список путей, среди которых находится и нужный нам ярлык. В нашем случае мы просматриваем рабочий стол пользователя.  Но это можно и поменять. Наконец, мы создаём объект шелла и переменную, в которой хранится старый путь к программе. Теперь можно приступать к работе.
Мы проходим по всем путям и используем объект шелла для получения свойств ярлыка. Нам нужно только одно из них - Targetpath, так что мы извлекаем его и проверяем на соответствие старому пути. Если это наш ярлык, то мы изменяем путь на новый и сохраняем ярлык. Вот и всё.
К счастью, необходимость в этом возникает не так часто. Но когда Вам понадобится - Вы будете занть, что  Python спешит на помощь.

Комментариев нет:

Отправить комментарий