BorlandIMHO
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору LZAA Цитата:| Но если 'x.exe' сохраняет некий файл на диск, то 'y.exe' запускается раньше и использовать этот файл не может | Все "стандартные" консольные команды, запускаемые скриптом в пределах одной консоли, как и большинство программ с GUI, выполняются строго последовательно, в том порядке, в котором запущены. Если, например, запустить из скрипта notepad.exe - скрипт будет ждать, пока вы его не закроете. Если запустить start "" notepad.exe - выполнится команда start, запускающая блокнот, и скрипт продолжит выполнение. "x.exe & y.exe" - команда y.exe выполнится после завершения x.exe, и никак иначе. "x.exe && y.exe" - команда y.exe выполнится после завершения x.exe, если команда x.exe вернула ERRRORLEVEL=0, и никак иначе. "x.exe && y.exe || z.exe" - после завершения x.exe с ERRRORLEVEL=0 выполнится y.exe, а с любым другим ERRORLEVEL выполнится z.exe, и никак иначе. В любом случае - выполнение следующей команды начинается после завершения предыдущей. Цитата:| "y.exe" в данном случае запускается строго после завершения "x.exe" | Это не совсем так, на самом деле. Команды при таком способе запуска вполне себе работают параллельно. Но: команда y.exe получит на вход всё, и в том порядке, в котором выдаст x.exe. При передаче данных через промежуточный файл - следующая команда не запустится, пока не завершится предыдущая. Вообще никак. Т.е. сначала x сохранит своё и завершится, а потом уже запустится y. Запускайте хоть через &, хоть последовательными строчками, на результат оно не влияет. Задержка при запуске хоть через конвейер, хоть при перенаправлении через промежуточный файл просто даст задержку. На передаче данных никак не скажется. | Всего записей: 3097 | Зарегистр. 12-10-2006 | Отправлено: 23:56 11-02-2025 | Исправлено: BorlandIMHO, 00:19 12-02-2025 |
|