ОК, теперь вопрос имеет смысл.
Я провел несколько тестов, и, если a.exe не существует, всплывает неприятное интерактивное окно с ошибкой Windows, и ваш пакет не будет продолжаться, пока вы не вручнуюзакрыть окно ошибки.(По крайней мере, это то, что происходит на моей машине с Vista). Поэтому, возможно, вы захотите проверить, что a.exe существует, прежде чем пытаться его запустить.
Если вы знаете полный путь заранее, тогда тест простЕСЛИ СУЩЕСТВУЕТ.Но если вы этого не сделаете, то вы можете найти путь с модификатором ~ $: 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
)
)