#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