Вверх ↑
Ответов: 4622
Рейтинг: 746
#1: 2020-12-08 16:14:27 ЛС | профиль | цитата
В bat-файле каждая строка подвергается дополнительной обработке: разбивается по пробелах (с учетом двойных кавычек) на отдельные команды. Первая команда проверяется на список ключевых слов, составляющих встроенные команды интерпретатора, остальные слова - это параметры команды. Команды типа "echo" или "pause" - это встроенные команды, компонент WinExec не знает что с ними делать. Например, "pause" - приостановить дальнейшее исполнение скрипта до нажатия кнопки. Ну, и как это сделать с WinExec? Надо самому приостановить перебор списка, затем по нажатию клавиши продолжить с места остановки (ну, или выдать Message, по закрытии продолжить).

А вот когда первая команда не является встроенной, тогда предполагается что это имя и путь к файлу, который надо запустить. А последующие команды в строке - командная строка для запуска. Тогда WinExec умеет это делать.
Выбрасываешь все строки с встроенными командами, оставляешь только строки, запускающие внешние приложения и их подаёшь на WinExec.
карма: 26

0
Редактировалось 1 раз(а), последний 2020-12-08 16:15:56