バッチで多重起動チェック・起動防止をする !!!多重起動チェック バッチファイルで多重起動をチェック・起動防止する。 よくある方法としては、以下の方法が見つかる。 * 方法1:バッチファイル自身を追記モードで開く。 * 方法2:ロックファイルを使う。 * 方法3:プロセスの有無をチェックする。 方法3のプロセス有無は、tsklist コマンドで実行されているコマンドをチェックする。 ただ、同時に実行された場合など、プロセスのチェックまでの隙間で、うまくチェックできない可能性ある。 また、方法1の場合、バッチファイル自身を追記で開きロックされるため、実行中はバッチファイル自体を変更できなくなる。 逆にエディタなどで開いてロックがされている場合も、実行中と判断される。 !!!方法3:プロセスの有無をチェックする プロセスの二重起動防止など tasklist コマンドでプロセスのリストを取得(UNIX の ps 代用)、findstr コマンドで文字列検索し(UNIX の grep 代用)、 findstr で文字列が見つかったかは ERRORLEVEL で返ってくる(見つかった場合は 0、ない場合は 1 が返る)。 tasklist | findstr sakura.exe if errorlevel 1 ( rem 起動していない )else( rem 起動してる ) !tasklist と findstr C:\>tasklist イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ System Idle Process 0 Services 0 8 K System 4 Services 0 6,716 K  :後略 C:\>tasklist | findstr sakura.exe C:\>echo %errorlevel% 1 C:\>tasklist | findstr sakura.exe sakura.exe 6352 Console 1 21,528 K sakura.exe 34304 Console 1 18,128 K C:\>echo %errorlevel% 0 C:\>