Evite executar várias instâncias de um arquivo em lotes

0

Estou executando o Selenium usando o Maven por meio de um arquivo .bat da minha área de trabalho. Agora, quando clico pela primeira vez, ele é executado. Como posso evitar que ele seja executado quando eu clico novamente? Por exemplo, ele deve mostrar alguma mensagem de que uma instância já está em execução.

Este é o meu script:

cd C:\Automation\MavenHorizonAutomationFramework
mvn test 
    
por ram 17.10.2013 / 10:14

3 respostas

3

Use algo como:

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
)

Como você já escreveu um arquivo em lote, considero que você é capaz de integrá-lo ao seu.

Se você quiser melhorá-lo, deverá escrever o ID do processo no arquivo lock.txt e, se existir, testar se o número do processo no arquivo também existe antes de assumir que está em execução. Dessa forma, se o processo morrer e o arquivo de bloqueio não for removido, você não o verá incorretamente pensando que ainda está sendo executado na próxima vez em que o arquivo de lote for executado.

    
por 18.10.2013 / 10:59
2

Você pode escrever um arquivo de bloqueio ao lado do script e removê-lo no final do script. Quando você iniciar o script, deverá mostrar a mensagem se o arquivo existir e sair. Se o arquivo não existir, ele poderá continuar sendo executado.

É assim que o yum e o apt estão fazendo isso.

    
por 17.10.2013 / 10:15
1

Tente usar isso no início do .bat. Ele irá verificar se outro cmd.exe já está sendo executado e, em caso afirmativo, sairá.

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
    
por 17.03.2017 / 16:28