пакетный файл: определить, когда закрывается 2-я командная строка?

#windows #maven #batch-file #command-line #command-prompt

#Windows #maven #пакетный файл #командная строка

Вопрос:

Я использую пакетный файл для запуска множества selenium automation через maven.

При запуске автоматизации открывается новая командная строка для запуска команды maven:

 start cmd /c mvn site surefire-report:report -Dtest=uk.co.......
  

Когда командная строка maven закрывается, я прошу пользователя, который ее запускает, нажать 1 в главной командной строке, чтобы он мог скопировать результаты теста в общее местоположение.

Иногда люди забывают нажать 1 и просто закрывают все, чтобы не удалось скопировать, мне было интересно, есть ли способ, которым я могу определить, когда закрывается командная строка maven, а затем автоматически скопировать результаты?

Ответ №1:

 start "" /wait cmd /c mvn site surefire-report:report -Dtest=uk.co.......
  

Или, если новое cmd окно не требуется, напрямую вызвать cmd /c .... или, если mvn это пакетный файл, использовать call mvn ....

В любом из случаев вызывающий объект остановит свое выполнение до завершения вызываемого процесса.

Ответ №2:

Вы можете использовать файл, чтобы указать, что команда maven активна: создайте файл перед запуском команды maven и удалите его, когда maven завершится. В основной программе введите цикл ожидания, пока файл индикатора не исчезнет:

 rem Create the indicator file:
echo X > mavenActive.txt

rem Start maven and delete the indicator file at end:
start cmd /c mvn site surefire-report:report -Dtest=uk.co....... ^amp; del mavenActive.txt

rem Wait for the indicator file disappear:
:wait
   rem Insert a delay so not use too much cpu:
   timeout /t 20 /nobreak
if exist mavenActive.txt goto wait

rem Copy maven results here:
copy ...
  

Если одновременно выполняется несколько процессов maven, вы можете использовать разные номера для каждого файла индикатора, а затем дождаться их всех с if exist mavenActive*.txt goto wait