Вы должны действительно отредактировать свой вопрос, чтобы включить в комментарии последовательность событий, которую вы хотите, потому что это вызывает много путаницы.
Я постараюсь собрать воедино то, что вы хотите:
- Запустите задание 1, создав новое окно
- Не ждите завершения задания 1, подождите 15 секунд
- Запустите задание 2, создав новое окно
- Если вы нажмете Ctrl + C в любом окне, это должно остановить работу и закрыть окно
- Я предполагаю, что если одно задание завершается до или после запуска другого, другое все равно нужно запустить или продолжитьработа.
Прежде всего, программа, которая в данный момент запускается - в вашем случае, которая выглядит как maven
- на самом деле получает Ctrl+C
и решает, как она будет действовать на нее.Я не уверен, если это так, как вы хотите.
Main.bat
echo Task-1:
"%comspec%" /c "C:\Users\user\bat\My_bat1.bat"
timeout 15 /nobreak
echo Task-2:
"%comspec%" /c "C:\Users\user\bat\My_bat2.bat"
Я добавил команду timeout
между запусками.Это ждет 15 секунд.Если вы удалите /nobreak
, можно было бы также прервать ожидание с помощью задачи № 2 по быстрому запуску клавиатуры раньше
. Я считаю, что call
иногда приводит к странным ошибкам в таких случаях, поэтому я предпочитаю "%comspec%" /c
.Он делает то же самое, за исключением того, что не получает обратно переменные среды, заданные в дочернем файле, что хорошо в вашем сценарии.
My_bat1.bat
start "" "%comspec%" /c "cd PATH & mvn -P dev & timeout -1 /nobreak"
Я удалил /wait
, что помешаловторой mvn
экземпляр от запуска до первого завершения или завершения.
Я заменил /k
на /c
и добавил timeout
для приостановки выполнения вместо /k
.
Оператор timeout -1 /nobreak
заставляет интерпретатор команд ждать бесконечно без возможности остановить его, за исключением Ctrl+C
.
Вы можете удалить /nobreak
, чтобы разрешить его закрытие любым нажатием клавиши, если mvn завершился нормально(если это когда-либо произойдет)
"%comspec%"
совпадает с cmd.exe
, но предпочтительнее, если Microsoft когда-либо решит изменить exe-имя интерпретатора команд.Пустое значение ""
before требуется, поскольку start
интерпретирует первую строку в двойных кавычках как имя окна.
Я предполагаю, что в текущей папке есть папка с именем PATH
, поскольку она не является переменной.Кроме того, переменная %PATH%
зарезервирована для списка путей поиска исполняемых файлов / библиотек, и ей нельзя присваивать какое-либо случайное значение или использовать с командой cd
, если вы действительно не знаете, что делаете.См. path /?
.
Я также использовал &
вместо &&
для предотвращения закрытия окна в случае сбоя mvn
.
My_bat2.bat
можно изменить аналогичным образом.