python window批量启动程序

1.首先编写一个启动编辑文件的脚本,存放需要启动的软件路径:

# -*- coding: utf-8 -*-
import sys
import os
import threading
import time
import win32process

"""
CreateProcess(appName, cmdLine, proAttr, threadAttr, InheritHandle, CreationFlags, newEnv, currentDir, Attr)

      appName         可执行文件名

      cmdLine         命令行参数

      procAttr        进程安全属性

      threadAttr      线程安全属性

      InheritHandle  继承标志

      CreationFlags  创建标志

      currentDir      进程的当前目录

      Attr             创建程序的属性
"""

dir_path = 'd:/one-button-start'
file_path = 'd:/one-button-start/start_app.txt'
app_list = []

class OneButton:
    # 定义构造器
    def __init__(self, app_list):
        # 封装账户编号、账户余额的两个成员变量
        self.app_list = app_list
        self.lock = threading.RLock()
    def getAppList(self):
        global app_list
        print("获取需要开机启动的软件")
        if not os.path.exists(dir_path):
            os.makedirs(dir_path)
        file = open(file_path)
        while 1:
            lines = file.readlines(100000)
            if not lines:
                break
            index = 0
            for line in lines:
                lineStr = str(line).replace('
', '')
                app_list.insert(index,lineStr)
                index = index + 1
        file.close()
        print('getAppList:↓↓↓')
        print(app_list)
        self.app_list = app_list
    def openAppFile(self):
        if not os.path.exists(dir_path):
            os.makedirs(dir_path)
        if not os.path.exists(file_path):
            f = open(file_path, 'w', encoding="utf-8")
            f.close()
        print("打开文件,写入可执行程序文件路径,写完保存文件后启动程序")
        # 用记事本打开aa.txt
        os.system('notepad ' + file_path)  # aa.txt文件必须在当前程序目录
    def runApps(self):
        print('runApps:↓↓↓')
        print(self.app_list)
        if self.app_list and len(self.app_list) > 0:
            for app in self.app_list:
                print('run app path in:' + app)
                # 打开程序,获得其句柄
                try:
                    handle = win32process.CreateProcess(app, '', None, None, 0, win32process.CREATE_NO_WINDOW, None, None, win32process.STARTUPINFO())
                except Exception as exc:
                    print('启动'+ app + '报错如下:↓↓↓')
                    print(exc)
                    print('请重新输入正确的路径')
                finally:
                    time.sleep(4)
        else:
            print("没有可以运行的程序!请录入可启动的程序")
            sys.exit(0)
    def main(self):
        self.getAppList()
        if self.app_list and len(self.app_list) > 0:
            self.runApps()
    def sotpApps(self):
        print("停止程序运行")
        # todo 关闭运行中的程序
        self.getAppList()
        if self.app_list and len(self.app_list) > 0:
            self.runApps()


if __name__ == '__main__':
    app = OneButton([])
    print('录入需要启动的程序')
    app.openAppFile()
    # 打包成exe程序
    # pyinstaller -F -w one_button_write.py
    # pyinstaller -F one_button_write.py  --noconsole
    # 打包成带图标的exe   # my.ico 是一个图标名,和当前的shjys_rjjqk.py文件在同一个目录下
    # pyinstaller -F  --icon=edit.ico one_button_write.py

2.读取脚本,一键启动

# -*- coding: utf-8 -*-
import sys
import os
import threading
import time
import win32process

"""
CreateProcess(appName, cmdLine, proAttr, threadAttr, InheritHandle, CreationFlags, newEnv, currentDir, Attr)

      appName         可执行文件名

      cmdLine         命令行参数

      procAttr        进程安全属性

      threadAttr      线程安全属性

      InheritHandle  继承标志

      CreationFlags  创建标志

      currentDir      进程的当前目录

      Attr             创建程序的属性
"""


dir_path = 'd:/one-button-start'
file_path = 'd:/one-button-start/start_app.txt'
app_list = []

class OneButton:
    # 定义构造器
    def __init__(self, app_list):
        # 封装账户编号、账户余额的两个成员变量
        self.app_list = app_list
        self.lock = threading.RLock()
    def getAppList(self):
        global app_list
        print("获取需要开机启动的软件")
        if not os.path.exists(dir_path):
            os.makedirs(dir_path)
        file = open(file_path)
        while 1:
            lines = file.readlines(100000)
            if not lines:
                break
            index = 0
            for line in lines:
                lineStr = str(line).replace('
', '')
                app_list.insert(index,lineStr)
                index = index + 1
        file.close()
        print('getAppList:↓↓↓')
        print(app_list)
        self.app_list = app_list
    def openAppFile(self):
        if not os.path.exists(dir_path):
            os.makedirs(dir_path)
        if not os.path.exists(file_path):
            f = open(file_path, 'w', encoding="utf-8")
            f.close()
        print("打开文件,写入可执行程序文件路径,写完保存文件后启动程序")
        # 用记事本打开aa.txt
        os.system('notepad ' + file_path)  # aa.txt文件必须在当前程序目录
    def runApps(self):
        print('runApps:↓↓↓')
        print(self.app_list)
        if self.app_list and len(self.app_list) > 0:
            for app in self.app_list:
                print('run app path in:' + app)
                # 打开程序,获得其句柄
                try:
                    handle = win32process.CreateProcess(app, '', None, None, 0, win32process.CREATE_NO_WINDOW, None, None, win32process.STARTUPINFO())
                except Exception as exc:
                    print('启动'+ app + '报错如下:↓↓↓')
                    print(exc)
                    print('请重新输入正确的路径')
                finally:
                    time.sleep(4)
        else:
            print("没有可以运行的程序!请录入可启动的程序")
            sys.exit(0)
    def main(self):
        self.getAppList()
        if self.app_list and len(self.app_list) > 0:
            self.runApps()
    def sotpApps(self):
        print("停止程序运行")
        # todo 关闭运行中的程序
        self.getAppList()
        if self.app_list and len(self.app_list) > 0:
            self.runApps()


if __name__ == '__main__':
    app = OneButton([])
    # 2.一键启动运行程序
    print('一键启动运行程序')
    app.main()
    # 打包成exe程序
    # pyinstaller -F -w one_button_start.py
    #打包成带图标的exe  # my.ico 是一个图标名,和当前的shjys_rjjqk.py文件在同一个目录下
    # pyinstaller -F --icon=start.ico one_button_start.py

最后打包成exe文件

使用  pyinstaller  去打包

最后生成一下两个文件

使用方法:

首先点击一键编辑会跳出:写完之后保存关闭即可

 然后点击 one_button_start.exe即可启动相关软件

 

 exe下载地址:

链接:https://pan.baidu.com/s/1IUwH4E6l7QeTEMU-eIeNXg
提取码:kr0t

写的比较简单,大家不喜勿喷哈,很鸡肋仅供学习使用;

原文地址:https://www.cnblogs.com/procedureMonkey/p/14379853.html