最全Windows下通过bat脚本执行python程序(从编写到执行到拓展到更换图标全过程) 您所在的位置:网站首页 bat输出日志 最全Windows下通过bat脚本执行python程序(从编写到执行到拓展到更换图标全过程)

最全Windows下通过bat脚本执行python程序(从编写到执行到拓展到更换图标全过程)

2024-05-23 23:19| 来源: 网络整理| 查看: 265

一、前言

有时我们写的一些python程序,由于每天都经常使用,因此不希望每次都打开IDE客户端或者cmd命令去执行,我们可以写一些bat脚本,每次需要执行时,双击一下脚本就可以了。我这里以一个放烟花的py脚本程序为例。

二、步骤

1.首先新建一个.txt文本文件,我们所需要写的命令行在这里面编写

2.接下来进行命令行介绍

rem 1注释:关闭回显 @echo off rem 2注释:激活我们的虚拟环境 call activate python37 rem 3注释:切换路径到要执行的脚本文件目录位置 cd /d D:\temporary\fireworks-main rem 4注释:执行python文件 python fireworks.py rem 5注释:执行文件后,暂停 pause

注:

(1)rem :只是每一行命令的注释,可以去掉,即

@echo off call activate python37 cd /d D:\temporary\fireworks-main python fireworks.py pause

(2)@echo off:一般直接将其放于程序的最上方就行了,它的作用是关闭回显,即在批处理运行命令的时候不会一条一条的显示执行的命令,只显示了命令的输出,而不是命令本身,这在编写较长的批处理文件时尤其有用,可以使输出结果更加简洁明了。与之相匹配的还有@echo on是打开回显。

示例

没有使用 @echo off 的情况下,批处理文件中的每一条命令及其输出都会显示。例如:

echo Hello World!

执行上述批处理文件将会显示:

echo Hello World! Hello World!

使用了 @echo off 后:

@echo off echo Hello World!

仅显示:

Hello World!

(3)call activate python37:是激活我们自己的虚拟环境,也可以先cd 到虚拟环境所在的目录文件夹下再activate激活,也可直接activate+虚拟环境名激活。还有一点,bat文件中,激活虚拟环境时,使用到call,功能是执行某个文件,更多详情自行百度。功能类似于python +文件。如果不添加call,激活环境会失败。

(4)cd /d D:\temporary\fireworks-main:切换到程序目录,这里注意,bat文件内的路径和文件名称,最好不要出现中文,容易报错。

(5)python fireworks.py:是执行py脚本命令,也可以使用start python fireworks.py,加start与不加的区别是:

不加start则执行后py脚本是在当前cmd窗口执行,如下所示

加start则执行后py脚本会新开一个窗口来执行,如下所示

(6)pause:bat文件中的"pause",如果不添加,执行bat文件后,屏幕就会闪一闪,很快就关闭CMD窗口。如果添加“pause”执行bat文件后,CMD窗口会保持,并提示“请按任意键继续...”,按下任意键后才关闭窗口。可以先加上这句,执行起来,看有没有报错,没有的话可以再去掉这句,如果有错误,加上这句方便在窗口查看错误是啥

3.最后将写好的.txt文本内容保存,修改txt格式为.bat格式

4.双击运行就OK啦!

三、拓展 3.1 多个py并行执行

上面步骤只是简单介绍一个小demo只有一个main主程序执行示例,但往往对于一个大型项目,我们需要同时执行多个py脚本程序,也就是开启多个进程,让他们并行执行互不干扰,那就可以像下面这样做

rem 1注释:关闭回显 @echo off rem 2注释:激活我们的虚拟环境 call activate python37 rem 3注释:切换路径到要执行的脚本文件目录位置 cd /d D:\temporary\fireworks-main rem 4注释:执行python文件 start python fireworks.py rem 5注释:切换路径到要另一个要执行的脚本文件目录位置 cd /d D:\temporary\Camera-calibration-image-fusion-main rem 6注释:执行另一个python文件 start python main.py rem 7注释:执行文件后,暂停 pause

效果如下:

注意:

当多个程序时,如果你不使用start python xx.py而是直接python xx.py,会出现一个问题,就是只有在当你将第一个程序窗口关闭之后,第二个程序窗口才会出来,没法同时展现出来,即此时他们就不是并行执行的关系了。而是一个执行结束之后,另一个才会执行起来

加start后台进程

不加start后台进程

关闭fireworks界面后,另一个才会出现

再多说几句:

(1)python xx.py & python xx1.py & python xx2.py # 前一个运行结束后,后面一个才会执行:

  如果你都多个程序要执行,且这些程序在同一个文件夹,可以这样写

rem 3注释:切换路径到要执行的脚本文件目录位置 cd /d D:\temporary\fireworks-main rem 4注释:执行python文件 python fireworks.py & python fireworks-old.py

效果和上面说的两个程序不加start一个效果

(2)python xx.py && python xx1.py && python xx2.py # 前一个运行成功后,才运行后面一个:

   这样写效果和(1)一样

rem 3注释:切换路径到要执行的脚本文件目录位置 cd /d D:\temporary\fireworks-main rem 4注释:执行python文件 python fireworks.py && python fireworks-old.py

(3)python xx.py || python xx1.py || python xx2.py # 前一个运行失败后,才运行后面一个:

这里我把第一个程序fireworks.py少些一个s变成firework.py使其因文件名错误而执行失败,发现后面的程序在这个程序执行失败后正常执行

rem 3注释:切换路径到要执行的脚本文件目录位置 cd /d D:\temporary\fireworks-main rem 4注释:执行python文件 python firework.py || python fireworks-old.py

(4)还有一种写法python xx.py ; python xx1.py ; python xx2.py #这种写法是不行的,只会执行第一个脚本

3.2 最小化黑窗口

我们前面也看到了,如果我们同时并行执行多个py脚本程序,需要用到start而且每一个脚本都会开启一个窗口,这样我们一执行就蹦出来好多窗口,感觉怪怪的,尤其给别人演示的时候,那么我们就可以写命令start /min python xx.py,让这些程序在打开执行的时候就窗口直接最小化不蹦出来就可以了

start /min python fireworks.py start /min python main.py

这样就只会有一个原始的cmd窗口蹦出来,如果这个窗口也不想要显示,直接将pause这行命令去掉即可。

3.3 跳转网页

我们的命令可以让我们直接打开某个网页,命令如下:

rem 1注释:关闭回显 @echo off rem 2注释:激活我们的虚拟环境 call activate python37 rem 3注释:切换路径到要执行的脚本文件目录位置 cd /d D:\temporary\fireworks-main rem 4注释:执行python文件 start /min python fireworks.py rem 5注释:切换路径到要另一个要执行的脚本文件目录位置 cd /d D:\temporary\Camera-calibration-image-fusion-main rem 6注释:执行另一个python文件 start /min python main.py rem 7注释:打开百度网页 start https://www.baidu.com/

其中这行start https://www.baidu.com/代码即可跳转到百度网页

3.4 更换bat图标

我们还可以给我们的bat文件添加图标,但是图标格式只能是ico格式的

1、找到要修改图标的的BAT文件

2、将该BAT文件移动到任意盘符中(不建议放置在C盘)

3、在该BAT文件上右击,选择“发送到”-“桌面快捷方式”

4、在桌面上找到BAT文件的快捷方式

5、在该快捷方式上右击,选择“属性”

6、在弹出的界面中找到“更改图标”按钮

7、在弹出的界面中选择合适的图标,并点击“确定”

8、根据提示点击“应用”- “确定”

9、图标修改完成

这以后就可以当作.exe程序似的双击直接使用了

四、总结

虽然在DOS和Windows(任意)系统中,用户可以当作一种程序部署方式,像执行.exe文件一样直接执行bat命令文件,从而大大简化日常或重复性任务,无需再调用dos窗口和击入dos命令。但是这种部署往往只限制于当前计算机(即所有项目环境都搭建好的计算机),如果想部署到新的计算机上,则需要将所需环境再迁移一遍过去(简单例子,如果你使用虚拟环境,程序所需的一些依赖包只有将环境迁移过去才可以找到,但是这种环境迁移也不麻烦,如果你自己在一个计算机上配置过一遍环境,如果你不更换系统,可以直接用硬盘将所有的环境直接拷贝过去就可以直接使用,如果想避免麻烦,还可以像原计算机一样,在相同的盘符,建立相同名称的文件夹,然后将东西拷贝过来,这样连程序中的文件路径都不需要改,但是如果计算机用户名称不一样的话,需要改一下,比如原计算机用户名为User新计算机用户名为Admin,这个环境迁移后,程序中路径这块名称记得改,否则会出现找不到文件的报错,这种方法对于虚拟环境同样适用)

当然如果不想每次都迁移环境,可以将程序封装成.exe,这种封装会将所需依赖自动查找并打包好,详细方法可以参考我另外两篇文章:

1.将Python 程序封装成exe程序(保姆级教程)

2.记录用python封装的第一个小程序



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有