如何正确编写等待先前启动的指定程序关闭的代码
错误原因
你代码中的waitfor用法完全不符合该命令的设计逻辑:Windows内置的waitfor是跨进程收发自定义同步信号的工具,本身没有监听进程退出状态的能力,你写的waitfor "closing of chrome.exe"不会触发任何等待进程关闭的效果。
具体实现方案
根据你的实际使用场景选对应写法即可:
- 如果你是要等待当前脚本自己启动的Chrome关闭:不需要额外加等待命令,只要去掉启动参数里的后台运行标记即可,启动命令本身会阻塞到程序退出后再执行后续逻辑。
- 写bat/cmd脚本时直接用:
"C:\Program Files\Google\Chrome\Application\chrome.exe" rem 下面写Chrome关闭后要执行的逻辑 - 如果是在MATLAB中调用
system函数,去掉命令末尾的&即可,system默认会等待调用的程序退出后再返回:system('"C:\Program Files\Google\Chrome\Application\chrome.exe"'); % 下面写Chrome关闭后要执行的逻辑
- 写bat/cmd脚本时直接用:
- 如果你是要等待已经在运行的、不是当前脚本启动的Chrome关闭:直接用系统自带的进程等待命令即可,不需要自己写轮询,PowerShell的
Wait-Process是专门做这个的,一行就能实现:
如果要在bat脚本里用,可以直接调用这行PowerShell命令:Wait-Process -Name chrome # 下面写Chrome全部关闭后要执行的逻辑powershell -Command "Wait-Process -Name chrome" rem 下面写Chrome全部关闭后要执行的逻辑
注意:Wait-Process默认会等待所有同名进程全部退出才会返回,如果要等待指定PID的单个进程,可以加-Id参数指定进程ID即可。
内容的提问来源于stack exchange,提问作者Aaa A
相关产品推荐
相关产品推荐

