背景:
之前在linux环境,使用shell脚本,实现对某个服务的启动、停止功能。
如果是在windows环境,如何使用bat脚本,实现python项目的启动、停止,如何实现window下的定时启动。
脚本的功能:
双击脚本,完成脚本的启动与关闭。通过增加进程信息存放文件,作为进程状态判断的依据。
- 如果改文件存在,启动脚本时,脚本会把指定的项目/进程关闭,并删除存放进程信息的文件;
- 如果该文件不存在,启动脚本时,脚本把指定的项目/进程启动,并生成存放进程信息的文件。
拿来主义脚本:
@echo off
rem 如果是python 项目
rem 激活python虚拟环境
SET "activate_venv=conda activate D:\work\envpy"
rem 进入项目路径
SET "projectPath=CD D:\FundDataAnalysis"
SET "CMD_OPTION=python main.py"
SET process_name="python.exe"
rem 如果是EXE
rem SET process_name="Snipaste.exe"
rem 保存进程信息到文件
SET pid_file=pid.txt
rem 执行脚本时
rem 如果进程文件存在,认为进程已经启动,进行关闭进程并删除进程文件
if exist %pid_file% (
TASKLIST /FO CSV /NH /FI "imagename eq %process_name% " > %pid_file%
ECHO 'kill %process_name%'
FOR /F "delims=, tokens=2,3" %%a IN (%pid_file%) do (
TASKKILL /F /PID %%a
)
DEL %pid_file%
) else (
rem 如果进程文件不存在,认为进程未启动,进行启动进程,创建进程文件
ECHO 'start and save %process_name% pid'
echo %activate_venv%
%activate_venv%
echo %projectPath%
%projectPath%
echo %CMD_OPTION%
rem %CMD_OPTION%
REM start /B /MIN %CMD_OPTION%
title "My Batch Script"
start "" %CMD_OPTION%
TASKLIST /FO CSV /NH /FI "imagename eq %process_name%" > %pid_file%
)
rem EXIT