Windows路径太长

时间:2018-01-25 12:43:01

标签: windows python-3.x shell path

以下代码段显示了如何在Windows中提取快捷方式的目标:

import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
fp = r'C:\very_long_path\to\a\link\file\shortcut.lnk'
shortcut = shell.CreateShortCut(fp)
#targetPath = "\\\\?\\"+shortcut.Targetpath # Does not help
targetPath = shortcut.Targetpath

如果lnk文件位于太长的路径上,则上述代码将失败。 在这种情况下,如何获得快捷方式的目标路径?

1 个答案:

答案 0 :(得分:0)

我相信您所面临的限制在win32com.client.Dispatch("WScript.Shell")范围内,这就是为什么您面临260个字符的限制,\\?\的前缀不能解决您的问题。

你必须通过

解决这个问题
  • 将文件夹复制到较短的路径(可以使用 \\?\前缀进行复制,以避免限制路径长度)
  • 然后创建快捷方式(不带 \\?\前缀),但路径目标更长。
  • 并全部复制(再次 \\?\前缀)。

或者,您可以考虑使用符号链接代替 Shortcut (Windows Vista和更高版本),可以使用os.symlink()创建,这将有效长路径名称带有\\?\前缀。这是我个人多次做过的事情,因为它实现起来更简单。但你必须问这个"快捷方式"或"符号链接"真的需要,因为一旦你有一个"符号链接"你需要在删除时删除两个源作为符号链接,否则你的文件将保留。

最后,您可以通过以下方式执行此操作:重新创建代码以正确格式创建快捷方式文件。 Here is some Microsoft Documentation,在线搜索会显示包含有用信息的多个链接。

虽然我没有这方面的经验,但似乎有module which claims it can natively create .lnk files