如何执行以下操作:
start a.exe
wait 5000
if(a.exe has started)
{
start b.exe
}
换句话说,a.exe
已启动。如果由于某种原因(未找到文件)无法运行,则不会执行b.exe
。否则,b.exe
将在五秒钟后启动。
答案 0 :(得分:1)
好的,这个问题现在有意义了。
我做了一些测试,如果a.exe不存在,则弹出一个令人讨厌的Windows交互式错误窗口,并且在您手动关闭错误窗口之前,您的批处理将不会继续。 (至少这是我的Vista机器上发生的事情)所以你可能想在尝试启动它之前验证它是否存在。
如果您提前了解完整路径,那么IF EXIST的测试很简单。但是如果你不这样做,那么你可以使用〜$:PATH修饰符搜索路径到FOR变量或参数扩展。
我不知道如果存在a.exe但由于其他原因而无法启动会发生什么。也许它仍会弹出错误窗口 - 这将是不幸的。
我原本以为你需要使用像TASKLIST这样的东西来验证a.exe是否正在运行,但是现在我认为你可以在START命令之后检查错误级别。
WAIT不是标准的Windows命令,但TIMEOUT(至少从Vista开始)。
for %%A in ("a.exe") if "%%~$:pathA" neq "" (
start a.exe && (
>nul timeout /t 5
start b.exe
)
)