python
  • win32com
  • 2013-07-11 30 views 3 likes 
    3

    使用win32com.client,我試圖在文件夾中創建一個簡單的快捷方式。然而,我想擁有參數的快捷方式,除了我不斷收到以下錯誤。Python - 使用參數創建快捷方式

    Traceback (most recent call last): 
        File "D:/Projects/Ms/ms.py", line 153, in <module> 
        scut.TargetPath = '"C:/python27/python.exe" "D:/Projects/Ms/msd.py" -b ' + str(loop7) 
    
    File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 570, in __setattr__ 
        raise AttributeError("Property '%s.%s' can not be set." % (self._username_, attr)) 
    AttributeError: Property '<unknown>.TargetPath' can not be set. 
    

    我的代碼看起來是這樣的。我嘗試了多種不同的變量,但似乎無法做到。我究竟做錯了什麼?

    ws = win32com.client.Dispatch("wscript.shell") 
    scut = ws.CreateShortcut("D:/Projects/Ms/TestDir/testlink.lnk") 
    scut.TargetPath = '"C:/python27/python.exe" "D:/Projects/Ms/msd.py" -b 0' 
    scut.Save() 
    

    回答

    4

    您的代碼對我無誤。 (Windows XP 32位,Python 2.7.5,pywin32-216)。

    (我稍加修改你的代碼,因爲TargetPath應該只包含可執行文件的路徑。)

    import win32com.client 
    ws = win32com.client.Dispatch("wscript.shell") 
    scut = ws.CreateShortcut('run_idle.lnk') 
    scut.TargetPath = '"c:/python27/python.exe"' 
    scut.Arguments = '-m idlelib.idle' 
    scut.Save() 
    

    我AttributeError的類似你們當我嘗試以下(分配列表Arguments屬性。)

    >>> scut.Arguments = [] 
    Traceback (most recent call last): 
        File "<stdin>", line 1, in <module> 
        File "c:\python27\lib\site-packages\win32com\client\dynamic.py", line 570, in __setattr__ 
        raise AttributeError("Property '%s.%s' can not be set." % (self._username_, attr)) 
    AttributeError: Property '<unknown>.Arguments' can not be set. 
    
    1

    「..TargetPath應該只包含[an]可執行文件路徑。」在兩種方式中不正確:

    1. 目標還可能包含可執行文件的參數。

    例如,我有一個文件[d:\ DATA \ CCMD \ Expl.CMD]的代碼,其基本線是 啓動Explorer.exe 「%目標%」

    其使用的一個例子是 D:\ DATA \ CCMD \ Expl.CMD「D:\ DATA \ SYSTEM - 新的安裝程序」

    這整行是您所指的「可執行文件」。

    1. 目標不一定是「可執行」。這可能是任何文件,操作系統在裏面可以進行操作,比如其默認行爲運行可執行與文件作爲參數的文件類型,如: 「我FILE.TXT」

    的「該文件類型的默認動作是用文本編輯器打開它。實際的可執行文件運行不明確。

    相關問題