一键启动多个程序

每天打开电脑要启动的一般都是那几个程序,于是用python写了个小工具一键启动他们;

要启动的软件使用excel配置,读取excel的方法我直接百度使用别人写好的方法,py读取Excel表数据

import xlrd


class ExcelUtil():

    def __init__(self, filePath, sheetName):
        self.data = xlrd.open_workbook(filePath)
        self.table = self.data.sheet_by_name(sheetName)
        # 获取第一列的key值
        self.keys = self.table.row_values(0)
        # 获取总行数
        self.rowNum = self.table.nrows

        # print(u"总行数:", self.rowNum)
        # 获取总列数
        self.colNum = self.table.ncols
        # print(u"总列数:", self.colNum)

    # 读取Excel表中值
    def dict_data(self, ):
        if self.rowNum <= 1:
            print("无数据可取")
            return []
        else:
            # 创建一个列表将数据放入
            r = []
            j = 1
            for i in range(self.rowNum - 1):
                s = {}
                # 从第二行取对应values值
                values = self.table.row_values(j)
                for x in range(self.colNum):
                    s[self.keys[x]] = values[x]
                r.append(s)
                j += 1
            return r


def read_excel(filePath, sheetName):
    data = ExcelUtil(filePath, sheetName)
    return data.dict_data()

 

接下来就是使用读取到的数据

import pynput
import time
import os
from multiprocessing import Process, freeze_support  # 进程
from excel import *

try:
    # from win32ctypes.pywin32 import pywintypes  # noqa: F401
    # from win32ctypes.pywin32 import win32api
    import pywintypes
    import win32api
except ImportError:
    pass

keyboard = pynput.keyboard.Controller()

filePath = "./config.xlsx"
Sheet1 = read_excel(filePath, "Sheet1")
Sheet2 = read_excel(filePath, "Sheet2")

# 移走鼠标 防止按回车时连续触发
mouse = pynput.mouse.Controller()
mouse.position = (1216, 538)
mouse.press(pynput.mouse.Button.left)
mouse.release(pynput.mouse.Button.left)


def isNumber(val):
    try:
        int(val)
        return True
    except ValueError:
        return False


def star_exe():
    # Sheet1其它方法读取的excel数据
    for item in Sheet1:
        if item["unuse"] == "":
            # 执行命令行
            win32api.ShellExecute(0, "open", item["url"], "", '', 1)
            if item["is_enter"] == 1.0:
                # 延时2秒
                time.sleep(2)
                # 按下回车
                keyboard.press(pynput.keyboard.Key.enter)
                # 松开回车
                keyboard.release(pynput.keyboard.Key.enter)
            if isNumber(item["s1"]):
                time.sleep(int(item["s1"]))
            else:
                time.sleep(1)
        else:
            pass


def run_cmd():
    cmd_list = []
    for item in Sheet2:
        if item["unuse"] == "":
            url = ""
            if item["url"] != "":
                url = "cd " + item["url"] + "&&" + item["url"][0] + ":&&"
            cmd = url + item["cmd"]
            p = Process(target=cmd_call, args=(cmd,))
            cmd_list.append(p)
            p.start()
        else:
            pass
    for c in cmd_list:
        c.join()


def cmd_call(s):
    os.system(s)


if __name__ == '__main__':
    # 防止多次执行程序
    freeze_support()
    p_list = []
    p1 = Process(target=run_cmd)
    p2 = Process(target=star_exe)
    p_list.append(p1)
    p_list.append(p2)
    p1.start()
    p2.start()
    for i in p_list:
        i.join()

使用方法:

建立一个名为config的excel文件

sheet1中可以配置要启动的软件或者网址一键启动多个程序

sheet2中可以配置一些用命令行运行的东西

一键启动多个程序