如何编写批处理文件在Windows进程终止时立即执行指定操作
问题与解决方案
问题场景
通过批处理启动ProgramX.exe后,它会在1秒内触发一系列极短生命周期的进程,其中ProcessA.exe启动后会立即终止,仅持续数毫秒。
原本的批处理代码是在ProcessA.exe启动时执行操作,代码如下:
start ProgramX.exe :search tasklist | find "ProcessA.exe" if errorlevel 1 goto search "execute action N"
但现在需要在ProcessA.exe终止的瞬间执行execute action N,避免操作干扰ProcessA.exe,且要求无延迟。尝试过start /wait命令,但该命令仅适用于start启动的目标进程,无法满足需求。
可行解决方案
已验证有效的批处理代码如下:
start ProgramX.exe :search tasklist | find "ProcessA.exe" if errorlevel 1 goto search :search1 tasklist | find "ProcessA.exe" > nul if errorlevel 1 ( "execute action N" ) else ( goto search1 )
逻辑说明
- 第一阶段循环
:search:持续检测ProcessA.exe是否启动,直到检测到该进程存在。 - 第二阶段循环
:search1:检测到ProcessA.exe存在后,立即进入新的循环,持续检测该进程是否消失;一旦检测到进程终止(errorlevel 1),立即执行目标操作execute action N。
测试表明,该方案可以在ProgramX.exe运行、ProcessA.exe启动并终止的瞬间执行指定操作,符合预期。
内容的提问来源于stack exchange,提问作者Noodneek
相关产品推荐
相关产品推荐

