Я бы не рекомендовал делать такие вещи. Во всяком случае, есть две проблемы. Прежде всего, чтобы пропустить новую строку, вам нужно \
, а не /
.
Во-вторых, ##
не так. То, что он делает, соединяет var
и int
. Таким образом, с MY_MACRO(foo)
вы получите intfoo;
, но вы хотите int foo;
Макрос должен быть таким:
#define MY_MACRO(var) \
int var
Это зависит от того, как .exe работает. Я боюсь, что у меня нет всех технических деталей или терминологии, но некоторые .exe файлы возвратят управление сессии сразу после того, как они запустили, в то время как другие не возвратят управление, пока программа не завершилась.
Второй случай легок, поскольку команды поздно в файле не выполнятся, пока первый не завершился, таким образом, я предположу, что Вы сталкиваетесь со случаем № 1.
Легкое обходное решение/взлом, если выполнение занимает (приблизительно) то же количество времени каждый раз, оно работает, должен использовать команду ping с задержкой.
PING 127.0.0.1 -n 1 -w 120000 >NUL
Это вынудит команду ping работать однажды с 120 000 мс (2 минуты) задержка.
Существует также хорошая статья о более сложном (но более надежный метод) на fpschultze.de с намного более подробным объяснением. Короче говоря Вы запрашиваете список задач, ищущий исполняемый файл, которого Вы ожидаете. Как только это не там, Вы продолжаете с пакетным файлом. Это также использует метод ping, но другим способом.
Операторы в пакетном файле выполняются последовательно. Таким образом, если Ваш пакетный файл похож:
first.exe
next.exe
Затем выполняется, если сначала завершается.
Вы могли использовать команду "запуска" с параметром/, ожидают, использование запускается/? на командной строке для деталей.
Можно использовать
PAUSE
В пакетных сценариях, но я не понимаю Вашего вопроса.