我有一个Windows应用程序,它开始运行.bat文件。此 .bat 文件在启动 .exe 之前调用不同的东西。问题是,无论我做什么,我都可以运行该 .exe,但是一旦脚本结束,应用程序也会结束。我认为这个问题与 .exe 需要通过该 .bat 文件启动这一事实有关。这是我已经用 python 尝试过的东西:
subprocess.Popen(['cd','path\\to\\the\\script', '&&', 'start.bat' ], shell=True, text=True | subprocess.DETACHED_PROCESS )
time.sleep(10)
睡眠结束后,启动的 .exe 将关闭。我也尝试过不同的子进程参数,例如
subprocess.CREATE_NEW_PROCESS_GROUP
但没有运气。
我也尝试过:
os.system('cd "path\\to\\the\\script" && "start.bat"')
同样的事情。我已经尝试过从这里找到的答案,但没有运气。
那么是否有其他方法来启动该 .bat 文件并以某种方式让它“真正”存在,因为我认为问题是,当 .bat 文件完成其工作时,它会退出,这会以某种方式把事情搞砸。
在调用 .bat 之后在 python 中创建无限循环听起来也不是一个好的解决方案,只是为了保持调用进程的运行。
不,我不能直接调用.exe。
运行 .exe 后,您可以检查它是否运行(参见此线程)
这将类似于:
import psutil
if "YourEXEProcess" in (p.name() for p in psutil.process_iter(attrs=['name'])):
time.sleep(some appropriate amount of time)
else:
end of script