Решение Джонатана работает отлично.Это полезная функция, которую я создал, реализуя это.Просто введите имя файла ярлыка (например, «Mozilla Firefox.lnk», указывать полный путь к файлу не нужно) и новое назначение ярлыка, и он будет изменен.
import os, sys
import pythoncom
from win32com.shell import shell, shellcon
def short_target(filename,dest):
shortcut = pythoncom.CoCreateInstance (
shell.CLSID_ShellLink,
None,
pythoncom.CLSCTX_INPROC_SERVER,
shell.IID_IShellLink
)
desktop_path = shell.SHGetFolderPath (0, shellcon.CSIDL_DESKTOP, 0, 0)
shortcut_path = os.path.join (desktop_path, filename)
persist_file = shortcut.QueryInterface (pythoncom.IID_IPersistFile)
persist_file.Load (shortcut_path)
shortcut.SetPath(dest)
mydocs_path = shell.SHGetFolderPath (0, shellcon.CSIDL_PERSONAL, 0, 0)
shortcut.SetWorkingDirectory (mydocs_path)
persist_file.Save (shortcut_path, 0)
Единственная зависимость - это библиотека pywin32.Также обратите внимание, что можно указать параметры и аргументы в назначении ярлыков.Для реализации просто позвоните:
short_target("shortcut test.lnk",'C:\\') #note that the file path must use double backslashes rather than single ones. This is because backslashes are used for special characters in python (\n=enter, etc) so a string must contain two backslashes for it to be registered as one backslash character.
В этом примере для назначения ярлыка на рабочем столе, называемого «ярлык-тест», указывается ярлык, который открывает файловый менеджер в корневом каталоге жесткого диска (C:)
.