2013-07-11 5 views
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 32bit, 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] которого необходимы строка кода START Explorer.exe "% Цель%"

Пример его использования D: \ DATA \ CCMD \ Expl.CMD "D: \ DATA \ SYSTEM - NEW INSTALL PROGS"

Вся эта строка является «исполняемым», на который вы ссылаетесь.

  1. Цель не обязательно должна быть «исполняемой». Это может быть любой файл, в котором операционная система может действовать на, например, тех типов файлов, действия которых по умолчанию запустить исполняемый файл с файлами в качестве аргументов, например: «Мой File.txt»

" действие по умолчанию "в этом типе файла - открыть его с помощью текстового редактора. Фактический запуск исполняемого файла не является явным.

Смежные вопросы