【YushenFeb】Bat文件实现周期性计划运行程序

206 阅读4分钟

一、基础知识

1.1 初识Bat文件?

1.1.1 Bat文件的概念

“.bat”文件类型指批处理文件类型,是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用(利用该特性完成对指定Python程序的周期性计划运行)。该文件的每一行都是一条DOS命令(如同在DOS提示符下执行的命令行),通常使用DOS下的Edit或者Windows的记事本(Notepad)等任何文本文件编辑工具创建和修改批处理文件。

1.1.2 批处理的概念

批处理(Batch)指对某对象的批量处理,通常被认为是一种简化的脚本语言,应用于DOS和Windows系统中。该文件的扩展名为Bat或Cmd。较为复杂的情况下,需要使用if、for、goto等命令控制程序的运行,如同C、Basic等高级语言。

1.1.3 Bat文件的第三方兼容性

使用Bat文件实现较为复杂的应用时,通常会利用外部程序,这包括系统本身提供的外部命令和第三方提供的工具或软件。Bat文件虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何当前系统下可运行的程序均可通过调用在Bat文件中运行。

1.2 常用命令

命令作用
echo off表示此语句后的所有运行的命令都不显示命令本身
echo on表示此语句后的所有运行的命令都显示命令本身
rem注释
echo表示显示此命令后的字符,也可以用于将命令后的字符串输出到文件
pause暂停执行并在屏幕上显示“Press any key to continue...”的提示,等待用户按任意键后继续
exit /b code加上/b选项表示退出当前批处理脚本(b是bat的缩写),相当于函数的return语句;code是个数字,表示执行结果
call用来调用另一个批处理
type用来输出文件内容
set用于定义变量
for循环遍历一个集合并执行指定命令
if判定参数是否符合期望值;判定文件是否存在
goto结合标签进行跳转

二、项目需求

2.1 需求来源

实际工作中每天将会产生大量的数据文件,并且需要按一定要求通过Python程序导入指定数据库。在编写完该Python后,苦于每天要手动运行该Python程序完成数据的导入,想着能否在后台挂起一个程序在每天指定时间完成该Python程序的执行。

2.2 实现方法

2.2.1 方法一:设置任务计划程序

该方法是最为方便快捷的,但是考虑到在更换设备时需要重新设定比较麻烦,还是打算写一个脚本工具随处随时挂在后台便可实现计划运行Python程序。

2.2.2 方法二:编写Bat文件

需求已经明确就是要每天计划运行指定Python程序,可以利用Bat文件可以对其他程序的调用这一特性完成该需求。

三、具体实现

  • 程序源码
@echo off
::设置周期间隔时间(s)
set INTERVAL=86400

echo Start Scheduled Restarts Service On:
set d=%date:~0,10%
set t=%time:~0,8%
echo %d% %t%

:Again

echo.
echo.
echo -----------------------------------------------------------------------------
echo Start time:
set d=%date:~0,10%
set t=%time:~0,8%
echo %d% %t%

::检测程序是否正在运行,如果正在运行则结束进程并重新执行
echo Check and prepare to end the process!
taskkill /f /t /im test_bat.py

::设置调用程序及其路径
echo Prepare to start the process in:
C:
cd C:\Users\YIMENGSIR\Desktop
start python test_bat.py
timeout %INTERVAL%

goto Again
  • 在TXT文档中写好后,将后缀名改为bat,即可完成该周期性计划运行程序工具的编写。 tool.png

  • 最终形成所需调用的程序和Bat文件

tool2.png

四、程序测试

4.1 什么是程序测试?

程序测试的概念:程序测试(Program Testing)是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前检测,以确保该程序能按预定的方式正确地运行。

4.2 测试流程

4.2.1 准备测试程序

  • 准备一个简单Python程序,单次执行效果如下: tool3.png
  • 单次执行成功将用“*”组合出一个菱形,且该窗口不自动关闭。

4.2.2 程序参数设置

  • 为了节约测试时间,将周期间隔时间设置为20s: tool4.png

4.2.3测试效果展示

  • 周期性计划运行测试程序多次效果: tool9.png

  • 每经过20s将执行一次所调用的Python程序: tool5.png

  • 主程序将显示该周期性计划运行工具的开始时间及每次执行所调用程序的开始时间: tool6.png

  • 所调用程序是否已经在运行(显示没有找到进程说明所调用程序没有正在运行): tool7.png

  • 距离下一次运行所调用程序需等待的时间。 tool8.png