69215


PythonでWindowsのショートカットを作成することはできるのでしょうか。  
windows 10 Pro, Python3.7です。

`C:\Users\username\Desktop\` に `C:\Users\username\Downloads\`
へのショートカットを作成したいと考えていますが、検索しても調べ方が悪いのかそれらしいものが引っかかりません。

.batでも.vbsをかませる必要があり、ショートカット作成は難しいものなのかと思っております。

詳しい方、よろしくお願いいたします。

**追記**  
saitokさんの回答だと、python3で`pip install
mklnk`でインストールできなかったのですが、ご本人に別質問で補足を頂き、解決したので貼っておきます。  
[pipでmklnkがインストールできない](https://ja.stackoverflow.com/questions/69699/pip%E3%81%A7mklnk%E3%81%8C%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)


CC BY-SA 4.0
2020-08-03T11:35:03.683
69212
2020-08-22T06:35:54.300
2020-08-22T06:35:54.300
3060
12457
question
python python3 windows
PythonでWindowsのショートカットを作成したい


ライブラリを使ってよいのであれば、[mklnk](https://github.com/blacklanternsecurity/mklnk)が使えそうです（Win10で試して、作成できました）。内部的には[pylnk](https://github.com/strayge/pylnk)([pypi](https://pypi.org/project/pylnk/))を使っているようです。

[code]

    import mklnk
    
    mklnk.create_lnk('C:\\Users\\username\\Desktop\\Downloads.lnk',
                     target='C:\\Users\\username\\Downloads',
                     mode='Normal',
                     args='',
                     description='',
                     icon='',
                     workingDir='',
                     is_dir=True)
    
[/code]


CC BY-SA 4.0
2020-08-03T12:38:46.747
69215
2020-08-03T12:38:46.747
69212
answer


mklnkが利用できないとのことで、comtypesでWSHを呼び出す方法で作ってみました。

[code]

    pip install comtypes
    
[/code]

で、あらかじめライブラリをインストールしておいてください。  
あまりきれいではないですが、ショートカットを作成するサンプルを作ってみました。  
ソースコード内にもコメントで書いていますが、ショートカット作成時に指定したい情報がある場合は、適宜コメントを解除して指定してください。

[code]

    import comtypes.client
    import os
    
    #リンク先のファイル名
    target_file=os.path.join(os.path.dirname(__file__), "test.exe")
    #ショートカットを作成するパス
    save_path=os.path.join(os.path.dirname(__file__),"test.lnk")
    #WSHを生成
    wsh=comtypes.client.CreateObject("wScript.Shell",dynamic=True)
    #ショートカットの作成先を指定して、ショートカットファイルを開く。作成先のファイルが存在しない場合は、自動作成される。
    short=wsh.CreateShortcut(save_path)
    #以下、ショートカットにリンク先やコメントといった情報を指定する。
    #リンク先を指定
    short.TargetPath=target_file
    #コメントを指定する
    short.Description="テストショートカット"
    #引数を指定したい場合は、下記のコメントを解除して、引数を指定する。
    #short.arguments="/param1"
    #アイコンを指定したい場合は、下記のコメントを解除してアイコンのパスを指定する。
    #short.IconLocation="C:\\test\\test.ico"
    #作業ディレクトリを指定したい場合は、下記のコメントを解除してディレクトリのパスを指定する。
    #short.workingDirectory="c:\\test\\"
    #ショートカットファイルを作成する
    short.Save()
    
[/code]

以上、参考になれば幸いです。


CC BY-SA 4.0
2020-08-20T02:18:27.350
69707
2020-08-20T02:18:27.350
29034
69212
answer