你如何改变使用Python的Windows快捷方式?
例如来自:
H:\My Music\some_file.mp3
至:
D:\Users\Myself\My Music\some_file.mp3
下面是使用Winshell库在Python中执行此操作的另一个更合适的方法: 使用Python创建Windows快捷方式 。 在你的情况下,代码将如下所示:
import os, winshell from win32com.client import Dispatch desktop = winshell.desktop() path = os.path.join(desktop, "some_file.mp3.lnk") target = r"D:\Users\Myself\My Music\some_file.mp3" wDir = r"D:\Users\Myself\My Music" icon = r"D:\Users\Myself\My Music\some_file.mp3" shell = Dispatch('WScript.Shell') shortcut = shell.CreateShortCut(path) shortcut.Targetpath = target shortcut.WorkingDirectory = wDir shortcut.IconLocation = icon shortcut.save()
现有的快捷方式应该被删除或重写。 如果你需要它的批处理快捷方式文件,那么我认为有一些方法来读取现有的快捷方式的路径,但没有设法找到它。
乔纳森的解决方案完美地工作。 这是我实现这个功能的有用功能。 只需传入快捷方式文件的名称(例如“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.
这个例子将把你桌面上一个名为“shortcut test”的快捷方式的目的地设置成打开硬盘根目录(C :)中的文件管理器的快捷方式。
以下是如何使用Windows脚本主机创建快捷方式: http : //msdn.microsoft.com/zh-cn/library/fywyxt64
尝试将其写入Python文件并动态运行。
这里详细介绍另一种方法
使用快捷方式更新示例。 你可以通过shortcut.GetPath()
,修改它,然后使用shortcut.SetPath()
方法来设置它。