最近在写代码时遇见个问题,想把exe添加到服务里面,又牵扯到部署问题,安装时总不能每次都手动添加吧,想到了批处理文件,但是又嫌弃每次都要写,所以直接用了自动生成
# 这个文件主要用于扫描本文件的目录,根据文件夹里面的exe文件,去自动生成创建服务的bat文件
import os,sys
# 获取当前路径
file_path = os.path.dirname(os.path.abspath(__file__))
# 扫描当前路径下面的所有文件
files = os.listdir(file_path)
# 获取所有.exe结尾的程序,并获取名称
need_files = []
for i in files:
if i.endswith('.exe'):
need_files.append(i)
print(need_files)
def create_bat(exe_name):
exe = exe_name.split('.')[0]
dat_path = file_path+os.sep+exe+'_service.bat'
if os.path.isfile(dat_path):
os.remove(dat_path)
b = open(dat_path,'w',encoding='ANSI')
TempList = '''@echo off
echo OFF
NET SESSION >nul 2>&1
IF %ERRORLEVEL% EQU 0 (
ECHO Administrator PRIVILEGES Detected!
ECHO Get Administrator PRIVILEGES Successed!
) ELSE (
echo ######## ######## ######## ####### ########
echo ## ## ## ## ## ## ## ## ##
echo ## ## ## ## ## ## ## ## ##
echo ###### ######## ######## ## ## ########
echo ## ## ## ## ## ## ## ## ##
echo ## ## ## ## ## ## ## ## ##
echo ######## ## ## ## ## ####### ## ##
echo.
echo.
echo ####### ERROR: ADMINISTRATOR PRIVILEGES REQUIRED #########
echo ####### ERROR: 需要以管理员权限运行 #########
echo This script must be run as administrator to work properly!
echo If you're seeing this after clicking on a start menu icon, then right click on the shortcut and select "Run As Administrator".
echo 这个批处理脚本需要管理员权限才能正常运行!
echo 请右键该菜单或批处理文件,选择"以管理员身份运行".
echo ##########################################################
echo.
PAUSE
EXIT /B 1
)
echo Bin directory: %~dp0
cd /D "%~dp0"
echo curdir: %cd%
echo.
echo ---------- stop --------
taskkill /f /t /im {}
IF ERRORLEVEL 0 echo 服务停止成功
echo.
cd {}
echo.
echo ---------- install --------
.\{} install
IF ERRORLEVEL 0 echo 安装成功
echo.
echo ---------- startup auto install --------
.\{} --startup auto install
IF ERRORLEVEL 0 echo 服务设置开机自启成功
echo.
echo ---------- start --------
.\{} start
IF ERRORLEVEL 0 echo 服务启动成功
echo.
echo 安装成功,打开服务查看
pause
'''.format(exe_name,file_path,exe_name,exe_name,exe_name,)
b.write(TempList)
b.close()
# subprocess.Popen("upgrade.bat") #不显示cmd窗口
# os.system('start upgrade.bat') #显示cmd窗口
# 根据程序名称自动生成对应的bat文件
for i in need_files:
print(i)
create_bat(i)
这里就可以打包了,打包后把exe放置到需要生成批处理的exe同一级目录,点击运行,就会生成对应exe的批处理问题
该批处理文件主要解决的是服务的自动创建、开机自启、创建后启动的问题。需要配合另外一个自动创建服务的程序