**********************实现右键功能**********************
程序名称:install.py
环境win10+python3
安装库:pip install winshell
#传递参数为xxx.py(1 非全路径名称;2 需要和install.py同级目录)
#生成xxx_bat.bat文件,
# 并且在......\AppData\Roaming\Microsoft\Windows\SendTo下生成xxx_bat右键快捷图标
使用方法:任何文件右键选择send to找到xxx_bat执行
#coding:utf-8
#python:3
import sys
import os
from os import path
import winshell
PYTHON_NAME = sys.argv[1]
# 测试完成
def delete_shortcut_from_sendto(argv):
target = argv
s = path.basename(target)
fname = path.splitext(s)[0]
delfile = path.join(winshell.sendto(), fname + '.lnk')
print(delfile)
winshell.delete_file(delfile)
# 测试完成
def create_shortcut_to_sendto(argv):
target = argv
title = 'test'
s = path.basename(target)
fname = path.splitext(s)[0]
path_ = path.join(winshell.sendto(), fname + '.lnk')
print(path_)
if os.path.isfile(path_):
print("{} exists".format(path_))
delete_shortcut_from_sendto(target)
winshell.CreateShortcut(
Path=path_,#右键sendto快捷方式
Target=target,
Icon=(target, 0),
Description=title)
def Change(python_name):
new_path = os.path.dirname(os.path.realpath(__file__))
new_cmd = "python {}\\{} %1".format(new_path, python_name)
bat_name = os.path.splitext(PYTHON_NAME)[0]
bat_path = "{}\\{}_bat.bat".format(new_path, bat_name)
if not os.path.isfile(bat_path):
with open(bat_path, "w") as f:
f.write(new_cmd)
return bat_path
with open(bat_path, "r") as f:
line = f.readline()
if line == new_cmd:
print("same")
return bat_path
with open(bat_path, "w") as f:
f.write(new_cmd)
return bat_path
if __name__ == "__main__":
bat_path = Change(sys.argv[1])
bat_name = os.path.split(bat_path)[1]
try:
delete_shortcut_from_sendto(bat_path)
except:
print("{}.bat not find; pass".format(bat_path))
create_shortcut_to_sendto(bat_name)
# os.system("pause")
#功能上有细微差别,有不能实现该功能可以自己调试或者给我相关需求我来调试均可
#个人习惯上使用pycharm