Apenas uma instância de lote

Apenas uma instância de lote

Encontrei este script aqui, ele funciona muito bem, mas o problema é porque gosto de definir um caminho onde o arquivo de bloqueio é armazenado, como D:\mylogs. Mas este script faz um log de onde é executado e isso não está ok. Alguma ajuda para alterar esse script para que eu possa selecionar minha própria pasta para arquivos de bloqueio?

Como posso evitar a execução do mesmo arquivo em lote duas vezes para permitir apenas uma instância?

Como alterar este código para que eu possa selecionar onde o arquivo locl será criado. Porque agora ele é criado onde o script é iniciado, mas quero bloquear o arquivo na minha pasta como D:\script Alguém pode ajudar, por favor?

:init
set "started="
2>nul (
 9>"%~f0.lock" (
  set "started=1"
  call :start
 )
)
@if defined started (
    del "%~f0.lock" >nul 2>nul
) else (
    echo Process aborted: "%~f0" is already running
    @ping localhost > nul
)

exit /b




:start
cd /d %~dp0
:: REST OF THE SCRIPT

informação relacionada