2016-07-31 4 views
4

Ich versuche, eine Verknüpfung durch Python zu erstellen, die eine Datei in einem anderen Programm mit einem Argument starten wird. ZB:Python, erstellen Verknüpfung mit zwei Pfaden und Argument

"C:\file.exe" "C:\folder\file.ext" argument 

Der Code habe ich versuche Messing mit:

from win32com.client import Dispatch 
import os 

shell = Dispatch("WScript.Shell") 
shortcut = shell.CreateShortCut(path) 

shortcut.Targetpath = r'"C:\file.exe" "C:\folder\file.ext"' 
shortcut.Arguments = argument 
shortcut.WorkingDirectory = "C:\" #or "C:\folder\file.ext" in this case? 
shortcut.save() 

aber ich erhalte einen Fehler Weg geworfen:

AttributeError: Property '<unknown>.Targetpath' can not be set. 

ich verschiedene Formate der Zeichenfolge versucht habe und Google scheint die Lösung für dieses Problem nicht zu kennen

Antwort

3
from comtypes.client import CreateObject 
from comtypes.gen import IWshRuntimeLibrary 

shell = CreateObject("WScript.Shell") 
shortcut = shell.CreateShortCut(path).QueryInterface(IWshRuntimeLibrary.IWshShortcut) 

shortcut.TargetPath = "C:\file.exe" 
args = ["C:\folder\file.ext", argument] 
shortcut.Arguments = " ".join(args) 
shortcut.Save() 

Reference

+0

Danke, das hat funktioniert! :) Aber ich musste einen schnellen und dreckigen 'path = '"% s "'% path' machen, um sicherzustellen, dass der zweite Pfad in Anführungszeichen um den String steht. Der Pfad, den Sie in TargetPath eingeben, fügt bei Bedarf automatisch Anführungszeichen hinzu (Leerzeichen im Pfad) – coco4l

+0

Ich freue mich zu hören, dass es für Sie funktioniert hat! Sie können die Antwort akzeptieren, wenn Sie mit der Lösung zufrieden sind. :) – wombatonfire

0

So funktioniert es in Python 3.6 (der zweite Import von @wombatonfire Lösung wird nicht mehr gefunden).

Zuerst tat ich pip install comtypes, dann:

import comtypes 
from comtypes.client import CreateObject 
from comtypes.persist import IPersistFile 
from comtypes.shelllink import ShellLink 

# Create a link 
s = CreateObject(ShellLink) 
s.SetPath('C:\\myfile.txt') 
# s.SetArguments('arg1 arg2 arg3') 
# s.SetWorkingDirectory('C:\\') 
# s.SetIconLocation('path\\to\\.exe\\or\\.ico\\file', 1) 
# s.SetDescription('bla bla bla') 
# s.Hotkey=1601 
# s.ShowCMD=1 
p = s.QueryInterface(IPersistFile) 
p.Save("C:\\link to myfile.lnk", True) 

# Read information from a link 
s = CreateObject(ShellLink) 
p = s.QueryInterface(IPersistFile) 
p.Load("C:\\link to myfile.lnk", True) 
print(s.GetPath()) 
# print(s.GetArguments()) 
# print(s.GetWorkingDirectory()) 
# print(s.GetIconLocation()) 
# print(s.GetDescription()) 
# print(s.Hotkey) 
# print(s.ShowCmd) 

siehe site-packages/comtypes/shelllink.py für weitere Informationen.

Verwandte Themen