避免运行批处理文件的多个实例

避免运行批处理文件的多个实例

我正在通过桌面上的 .bat 文件使用 Maven 运行 Selenium。现在,当我第一次单击时,它会运行。我如何避免它在我再次单击时运行?例如,它应该显示一些消息,表明实例已在运行。

这是我的脚本:

cd C:\Automation\MavenHorizonAutomationFramework
mvn test 

答案1

使用类似:

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
)

由于您已经编写了一个批处理文件,我假设您能够将其集成到您的文件中。

如果要增强它,则应将进程 ID 写入文件lock.txt,如果存在,则在假设它正在运行之前测试文件中的进程号是否也存在。这样,如果进程终止并且锁定文件未被删除,您就不会在下次运行批处理文件时错误地认为它仍在运行。

答案2

您可以在脚本旁边写一个锁定文件,并在脚本末尾将其删除。启动脚本时,如果文件存在,则应显示消息并退出。如果文件不存在,它可以继续运行。

这就是 yum 和 apt 的做法。

答案3

尝试在 .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

相关内容