让我们首先分析两个发布的Python脚本行在执行Python脚本时真正做了些什么。感谢eryksun进行深入调查,真正使用Python导致正确的描述,现在可以在下面阅读。

os.system()导致在前台使用控制台窗口执行cmd.exe /C并停止执行Python脚本,直到Windows命令解释程序终止。如果Python脚本本身在控制台中执行,则启动的cmd.exe将继承此控制台。

此命令进程以start开始,内部命令为cmd.exe,另一个命令进程带有前台控制台窗口。很好,但是第二个命令进程在完成命令执行后立即终止。如果您希望在运行Python脚本时看到执行脚本或Python解释器本身输出错误,那就不太好了。

因此,第二个命令进程使用选项cmd.exe启动/k以继续运行此命令进程,继承由start创建的控制台,并在完成指定命令的执行后打开控制台窗口

第二个命令进程运行内部命令call,这完全没有必要,因为python是真实的python.exe,一个控制台应用程序而不是批处理文件。因此,根本不需要call。

建议始终使用完整的文件名指定应用程序和脚本,即文件名+文件扩展名,而不仅仅是文件名。如果已知并修复了可执行文件/脚本的路径,则也应指定它。这使得应用程序/脚本的执行独立于当前目录和环境变量PATHEXT和PATH。

Python解释器在第二个控制台中执行指定的Python脚本。

os.system()完成后,第一个命令进程在start完成后立即终止,这在cmd.exe /k开始python.exe并且command = 'start cmd.exe /K python.exe %s ^&^& exit' % (some_py_prog)

os.system(command)正在解释Py​​thon脚本时已经发生。

剩下的就是使用脚本运行Python解释器的第二个命令进程。即使在完成指定Python脚本的执行后Python解释器终止后,此命令进程仍会继续运行。

因此,一旦Python解释器完成Python脚本的执行,目标是终止第二个命令进程和控制台窗口,但前提是脚本执行时没有错误。

好吧,我根本没有安装Python,但我认为它在执行脚本时出现错误,返回代码大于0。否则,在成功执行脚本时退出代码为0。

因此可以使用这样的命令:

start cmd.exe /K

由python.exe开始的第二个命令进程执行的命令行现在包含两个命令:

Python解释器exit,脚本作为参数执行

内部命令0,只有当第一个命令的退出代码为&&时,由于操作符^,Windows命令解释程序才应执行第二个命令。

醇>

每个&符号必须使用Windows命令解释器的转义字符进行转义,该命令解释符是插入符号&&。这是必要的,否则start将被运行start的第一个命令进程解释,作为在成功执行Test.bat后运行的附加命令。

请注意,我没有安装Python,因此只需在命令提示符窗口中使用批处理文件@echo %~dp0 executed. & exit /B 1和单个命令行start cmd.exe /K call Test.bat ^&^& exit进行测试。

Test.bat

call是批处理文件,而不是需要使用命令Test.bat的可执行文件。没有特定窗口标题的启动命令进程保持打开状态,因为Test.bat退出并返回代码1.如果我在{{1}}命令行末尾修改数字1到0,则启动的命令进程退出。

当然,使用此解决方案时,脚本代码本身必须停止脚本代码检测到的错误的脚本执行。

python如何关闭窗口仍能运行_Python在退出时关闭自己的CMD shell窗口相关推荐

  1. python按键盘上哪个键运行_python按什么键运行

    python按什么键运行? python按shift+F10键运行. Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新 ...

  2. python按键盘上哪个键运行_python通过按下键盘特定按键,开始运行python文件

    一.目的 通过按下键盘特定按键,开始运行python文件 二.code from pykeyboard import PyKeyboardEvent from pykeyboard import * ...

  3. python中的装饰器怎么运行_Python 装饰器入门(上)

    翻译前想说的话: 这是一篇介绍python装饰器的文章,对比之前看到的类似介绍装饰器的文章,个人认为无人可出其右,文章由浅到深,由函数介绍到装饰器的高级应用,每个介绍必有例子说明.文章太长,看完原文后 ...

  4. python中的elif语句怎么运行_Python的elif语句怎么用

    else和elif语句也可以叫做子句,因为它们不能独立使用,两者都是出现在if.for.while语句内部的.else子句可以增加一种选择:而elif 子句则是需要检查更多条件时会被使用,与if和el ...

  5. python按键盘上哪个键运行_python根据键盘输入进行相应操作

    上篇文章介绍了如何利用pyhook模块监听鼠标键盘的事件,接下来如果需要通过监听的事件内容,来做对应的操作,需要对event的内容进行相应的判断. 如果仅仅通过event.key来进行判断,可以写成s ...

  6. Python计算代码之间运行时间(运行间隔时间、时长)

    Python3.8以下使用time.clock() 通过代码统计 导入time库:import time 代码开始前获取开始时间:time_start = time.clock() 代码结束后获取结束 ...

  7. visual studio 2019工程运行时不要弹出cmd黑窗口

    原因:VS工程属性配置问题,[连接器]->[系统]->[子系统]设置成了控制台 解决方案:[连接器]->[系统]->[子系统]修改为窗口

  8. Linux 登陆用户时启动 ssh-agent 并在退出时关闭

    2019独角兽企业重金招聘Python工程师标准>>> 文/Fenying 使用 Git/SSH/SCP 之类操作的时候,一般都是用 ssh 密钥的,但是每次都要先启动 ssh-ag ...

  9. python飞机大战源码素材包_python(pygame)滑稽大战(类似飞机大战) 教程

    成品已录制视频投稿B站(本文目前实现了基础的游戏功能),点击观看 本帖曾在百度贴吧直播,但由于人气低反响差已停更. 项目稽忽悠不(github)地址(目前只上传了素材,代码还在整理中): https: ...

最新文章

  1. 阿里二面:为什么要分库分表?
  2. 修改文件默认打开方式
  3. 磁头号和起始扇区的计算方法------软盘结构
  4. Redis操作key相关API
  5. 工作252:uniapp--实战--uview---tabber
  6. 优秀Java程序员的编程风格
  7. 敏捷开发总结(2)开发过程活动
  8. 基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结【依赖库源码包】
  9. 系统发育树的构建方法介绍及数据问题等(古生物形态学数据)
  10. 【BZOJ5394】【Ynoi2016】—炸脖龙(树状数组+广义欧拉定理)
  11. php设计模式番外篇--超人的诞生
  12. Cadence OrCAD Capture 查找功能详细介绍
  13. 安卓中为了获取context的方法和区别(getContext,getActivity,this,mainActivity.this等)
  14. golang学习笔记之string转换
  15. 课程linux实验报告,Linux课程综合训练实验报告
  16. 基于WebGL架构的3D可视化平台—城市地下管线3D可视化
  17. 女人身体8大隐私部位长得越丑健康指数越高_113
  18. kbengine 源代码读
  19. 淘宝,京东老喜欢降价售卖,瞬间感觉亏大了。这款报价脚本你值得拥有。
  20. u3d游戏开发视频潭州_Unity MMORPG游戏开发教程(一)——初识Unity

热门文章

  1. 宝塔需在php设置中安装redis扩展,wordpress开启Redis扩展教程
  2. python hbase_Python操作Hbase
  3. 导致集群重启_干货丨如何水平扩展和垂直扩展DolphinDB集群?
  4. mysql的常用的备份工具_39、mysql常用备份工具
  5. 数字图像处理之图像边缘
  6. win10安装部署网络测试工具 NetCat 用于Spark跑测试
  7. matlab armax 无法识别,求教:Java调用系统辨识工具箱内的armax函数出错
  8. 找不到php的版本,php – 在任何版本中都找不到请求的包…
  9. Python 如何创建多维的list
  10. POJ 3267为什么优先队列超时,DP就能过,难过