バッチのインスタンスは1つだけ

バッチのインスタンスは1つだけ

ここでこのスクリプトを見つけました。うまく機能しますが、問題は、D:\mylogs のように、ロック ファイルが保存されるパスを設定するためです。ただし、このスクリプトは実行された場所にログを作成しますが、これは適切ではありません。ロック ファイル用に独自のフォルダーを選択できるようにこのスクリプトを変更する方法については、何かアドバイスがありますか?

同じバッチ ファイルを 2 回実行しないようにして、インスタンスを 1 つだけ実行できるようにするにはどうすればよいでしょうか。

このコードを変更して、locl ファイルが作成される場所を選択できるようにするにはどうすればよいでしょうか。現在はスクリプトが開始される場所に作成されますが、D:\script のようなフォルダーにロック ファイルを作成したいのですが、どなたか助けていただけませんか。

: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

関連情報