Я запускаю Selenium, используя Maven через файл .bat с моего рабочего стола. Теперь, когда я нажимаю в первый раз, он запускается. Как я могу избежать его запуска при повторном нажатии? Например, должно отображаться сообщение о том, что экземпляр уже запущен.

Это мой сценарий:

cd C:\Automation\MavenHorizonAutomationFramework
mvn test 

3 ответа3

3

Используйте что-то вроде:

REM Test for lock file
IF EXIST lock.txt (
REM Do nothing
) ELSE (
REM Create lock file
ECHO > lock.txt

REM Call your applications here

REM Delete the lock file afterwards
DEL lock.txt
)

Поскольку вы уже написали командный файл, я предполагаю, что вы можете интегрировать его в свой.

Если вы хотите улучшить его, вы должны записать идентификатор процесса в файл lock.txt и, если он существует, проверить, существует ли номер процесса в файле, прежде чем предполагать, что он работает. Таким образом, если процесс умирает и файл блокировки не удаляется, вы не получите его неправильно, думая, что он все еще будет запущен при следующем запуске пакетного файла.

2

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

Вот как это делают yum и apt.

1

Попробуйте использовать это в начале .bat. Он проверит, запущен ли еще один cmd.exe, и если так, то выйдет.

set cmdcount="wmic process where name="cmd.exe" | find "cmd.exe" /c"
FOR /F "tokens=*" %%i IN (' %cmdcount% ') DO SET X=%%i

IF %x%==2 GOTO resume exit

:Resume cd C:\Automation\MavenHorizonAutomationFramework mvn test

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .