使用Python启动并结束批处理文件却无法终止它们

1 投票
1 回答
969 浏览
提问于 2025-04-18 14:27

我正在写一个Python脚本,这个脚本会启动批处理文件,结束这些批处理文件,把日志文件移动到正确的位置,然后再重复这个过程。

我遇到的问题是:我可以启动第一个批处理文件,但无法结束它。我是这样启动的:

mapPath = "removed\\for\\reading\\Random.bat"
map = subprocess.Popen(mapPath, stdin = subprocess.PIPE, stdout = subprocess.PIPE)

然后我会启动另一个批处理文件,比如:

bat = os.system("batch1.bat")

当batch1.bat完成时,它应该能自己结束。但是我最开始运行的“map”进程却不能结束;我需要结束它,这样它就不会继续处理它正在写的最后一个日志文件,然后我才能开始移动文件。

我尝试了很多命令来结束它,比如kill()、terminate()、TerminateProcess(),用os.kill发送SIGINT,发送0给os.kill,还有用'taskkill /f'对进程ID进行操作。我唯一能想到的就是我需要结束原始批处理文件启动的程序,但我尝试写另一个批处理文件来结束它可能启动的程序,但运行那个批处理文件时总是给我一个无效查询的消息。

有什么想法吗?还有其他命令可以尝试结束批处理文件吗?还是我应该继续尝试结束我最开始启动的进程,而不是批处理文件?我在Windows 7上使用的是Python 3.3.3。

1 个回答

0

这个批处理文件在做什么,导致它无法结束呢?我觉得这可能就是问题所在。

撰写回答