【发布时间】:2018-05-12 21:27:22
【问题描述】:
我有一个程序需要在新的 CMD 中运行小任务。 例如:
def main()
some code
...
proc = subprocess.Popen("start.bat")
some code...
proc.kill()
subprocess,Popen 打开一个新的 cmd 窗口并在其中运行“start.bat”。 proc.kill() 杀死进程但不关闭 cmd 窗口。 有没有办法关闭这个cmd窗口?
我想命名打开的 cmd 窗口,这样我就可以用命令杀死它:
/taskkill /f /im cmdName.exe
有可能吗?如果没有,你有什么建议?
编辑、添加最小、完整和可验证的示例:
a.py:
import subprocess,time
proc = subprocess.Popen("c.bat",creationflags=subprocess.CREATE_NEW_CONSOLE)
time.sleep(5)
proc.kill()
b.py
while True:
print("IN")
c.bat
python b.py
【问题讨论】:
-
为什么不用隐藏的 CMD 运行脚本?
-
因为 CMD 将在后台保持活动状态。如果 main() 将被执行 100 次,那么我会让它们在任务管理器中全部空闲。
-
无法复现,即使脚本中有
pause,python在查杀时会关闭窗口。也许尝试minimal reproducible example 提供一个包含问题的示例 .bat 文件,以及你如何运行你的 python 程序。因为 python 在控制台中运行,所以不会打开新的控制台。只有使用 pythonw 才会这样做(并成功关闭它) -
@Jean-FrançoisFabre 尝试在子进程中运行一个不会停止的脚本
-
@Jean-FrançoisFabre 你可以试试我添加的例子
标签: python cmd subprocess