好吧,我已经搜索了很多网站的答案几天了。如果某个地方有答案,如果你指出我没有问题。我试图让批处理文件“A”读取文本文件“B”并获取一些信息,并将批处理文件“C”中的代码替换掉。首先运行它将执行此操作,然后运行批处理文件“C”。当批处理文件“C”正在运行时,批处理文件“A”正在监视文本文件“B”以更改文件的最后修改部分。当检测到变化时,我需要批处理文件“C”停止,读/写文本文件“B”到批处理文件“C”,然后再次启动批处理文件“C”。需要杀死批处理文件
我有代码工作,除了每次检测到更改时运行批处理文件“A”时,它都会执行所有操作,它会启动一个新的“C”批处理文件运行。
启动批处理文件 “C” 我用:
import subprocess
p = subprocess.Popen(r'start cmd /c C:\Users\james\Documents\FollowMeMap.bat', shell=True)
我试着使用p.terminate()和p.kill(),但没有作品。感谢大家的帮助。
您正在运行'CMD/C “开始CMD/C C:\用户\詹姆斯\文档\ FollowMeMap.bat”',因为'壳= TRUE'。为什么不简单地运行没有'shell = True'的批处理文件?如果您需要新的控制台窗口,请使用'p = subprocess.Popen(r'C:\ Users \ james \ Documents \ FollowMeMap.bat',creationflags = subprocess.CREATE_NEW_CONSOLE)'。像这样,进程'p'是执行“FollowMeMap.bat”的实际cmd.exe实例,您可以'p.kill()'它。 – eryksun