【发布时间】:2021-02-01 13:20:20
【问题描述】:
关于在 python 中使用 subprocess 模块运行批处理文件的快速问题。
背景
我正在从 python 运行 .bat 文件,而 .bat 100% 运行 Windows 应用程序(大约需要一分钟),然后等待来自 stdio 的输入(x 或 Esc) 关闭它。
我正在做的是:
subprocess.call([r'C:\Users\caSaira\Desktop\myExample.bat'], shell=True)
由于我不确定如何给出 x 或 Esc,我没有做任何事情(假设这将处于等待输入阶段)。 但是,看起来windows应用程序在无限循环中运行。
问题
- 有谁知道我如何在我完成执行后传递
'x'信? - 有谁知道为什么应用程序进入无限循环而不是等待阶段?
【问题讨论】:
-
等待输入的是什么,批处理文件中的代码或它运行的 Windows 应用程序?您是否有某种原因通过批处理文件而不是直接运行后者(尽管
subprocess)? -
@martineau Windows 应用程序完成处理后,等待用户输入关闭应用程序(请输入 x 或 ESC 关闭)
-
@martineau 没有具体原因...命令提示符无法找到我正在运行的应用程序,因为它是自定义 .exe 文件/.. 我想,我会 cd 到exe 位置,然后运行应用程序...所以我的批处理文件只有两行代码 .. 1)将目录更改为 .exe 位置 2)使用一些命令行参数运行 Windows 应用程序
-
如果你指定了
.exe的完整路径——在批处理文件中或者在直接使用subprocess执行它时——如果它存在就会被找到。如果需要,您还可以指定参数以通过subprocess传递它,以及使用stdin和/或stdout的 i/o 重定向。 -
我明白 .. 但 'x' 或 ESC 不是输入 cmd 行参数 .. 这些是关键输入,需要在过程完成后输入。
标签: python windows batch-file subprocess