好きなおでんの具材ドラフト会議しましょう

タスクスケジューラで複数のバッチファイルを起動していますが、同時に動かしたくないので
タスクの排他をしたいのですが、どうすればよいでしょうか?

A 回答 (2件)

No.1 です。

 補足します。
タスクが中断されてロック用のディレクトリが残ると
困ったことになることにご注意ください。
(取りあえず(実行していない頃合いを見計らって)定期的に消すとか、
 人力でチェックして消すなどのメンテが必要)

そのへんもきちんとしたい場合は、CreateMutex()するアプリケーションを作って、
(コマンドライン引数でファイル名を与えた)バッチファイルを起動する、
などの手間をかける必要があるかと思います。
    • good
    • 0

mkdir で排他用のディレクトリを作るとそこそこうまく行きます。


(シビアにほぼ同時に複数実行すると失敗することもあるようです)

setlocal

set LockDir=R:\Q
mkdir %LockDir%
if errorlevel 1 goto BYE

echo 私だけ
REM ここで仕事する
pause
rmdir %LockDir%
goto END

:BYE
echo 誰か居た
pause

:END
endlocal
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報