はじめに
WindowsでMicrosoft Edge(msedge.exe
)をバッチファイルから強制終了させたい場面は、運用の自動化や環境のリセット時など意外と多い。しかし、単に taskkill
コマンドを使っただけでは、プロセスが存在しないときにエラーが発生し、スクリプトの安定性を損ねる恐れがある。
今回は、Edgeのプロセスを安全に終了させるためのエラーハンドリング付きバッチファイルの書き方を解説する。
基本のバッチファイルとその落とし穴
まずは、よくある基本的なスクリプトを確認しておこう。
@echo off
taskkill /F /IM msedge.exe
exit /b 0
このバッチファイルは、msedge.exe
を強制終了し、スクリプトを終了するという単純な流れになっている。プロセスが存在する場合は問題なく動作するが、Edgeが起動していない状態でこのスクリプトを実行すると、taskkill
が「指定されたプロセスは見つかりませんでした」といったエラーを吐き、スクリプトの意図しない停止につながる場合がある。
エラーを吸収する形に改修
実運用では、プロセスが存在しないケースも想定して動作させる必要がある。つまり、「いなければいないでそのまま終わる」ような柔軟性が求められる。
以下のように、出力を抑制しつつエラーレベルを判定する構造に変更することで、より堅牢なスクリプトに仕上げることができる。
@echo off
taskkill /F /IM msedge.exe >nul 2>&1
if %ERRORLEVEL% NEQ 0 (
rem プロセスが見つからない場合、通知だけ行う
echo プロセスが見つかりませんでした。
)
exit /b 0
ここで行っているポイントは二つある:
>nul 2>&1
を指定して、taskkill
の標準出力と標準エラー出力を完全に非表示にしている。これにより、コマンド実行時に表示される不要なメッセージが抑制される。%ERRORLEVEL%
を確認し、非ゼロの場合のみ任意の処理(この例では簡易メッセージの表示)を行っている。
こうした構造にしておくことで、プロセスが見つからなかった場合でも処理全体は正常に完了する形となり、他のスクリプトや自動化処理と連携させる際にも安心して使用できる。
まとめ
バッチファイルでEdgeのプロセスを強制終了する際、プロセスの存在有無にかかわらずスムーズに動作させたいのであれば、エラーハンドリングの実装は欠かせない。
今回の方法を取り入れることで、余計なエラーメッセージを排除しつつ、意図したとおりの制御フローを維持できるようになる。
小さな工夫だが、バッチスクリプトの信頼性を大きく底上げするテクニックである。
ご希望があれば、他のプロセスへの応用方法やログ出力の拡張版なども記事化可能です。
コメント