Использование запуска в командном файле не ждет процесса - это как запуск нового потока.
Существует другой вызов функции (или запуск / ожидание), но он будет работать, если это не были службы. Проблема в том, что службы должны продолжать работать (вы не можете ждать, пока они завершат запуск /wait).
Таким образом, вам нужно реализовать какое-то условие и проверку в вашем командном файле, который, когда имеет значение true, запускает службу 2. Например, если это веб-служба и есть метод get, который можно использовать для проверки, работает ли он - вызовите этот метод и дождитесь результата, прежде чем запускать второй сервис.
Вы можете сделать что-то вроде:
start java -jar service1.jar --spring.profiles.active=local
:isStarted
set ready=false // Here you implement some logic to check if the service is running
if %ready%=="false" goto isStarted
start java -jar service2.jar --spring.profiles.active=local
Другим решением было бы создать отдельную Java-программу, которая тестирует service1 и завершает работу, когда она запущена и работает. Если мы назовем его «service1test», то ваш файл bat будет:
start java -jar service1.jar --spring.profiles.active=local
service1test - without using start so it can wait
start java -jar service2.jar --spring.profiles.active=local