なかなか終わらない処理を我慢できずにkillするbatファイル
この記事はコマンドプロンプト(cmd.exe) Advent Calendar 2015 17日目の記事です。
16日目の記事は@kunst1080さんのコマンドプロンプトのワンライナーでMessageBoxを表示する3つの方法でした!
使いどころあるのかどうかわからないし、どうにも不味いやり方をしているかもしれませんが、やりたいことは以下の通りです。
- バッチファイルの前段で(startコマンドなんかで呼び出された)処理がなかなか終わらない。
- 要件として1時間以内に終わらなければ処理を中止して異常終了として扱いたい。
dosにだっていろいろなコマンドがあるのです!
set num=1 :LOOP rem 5秒待ってから timeout /t 5 rem ryoana.exeが動いているか確認 rem findstrは引数の文字列が見つからない場合1を返す tasklist | findstr ryoana.exe if %ERRORLEVEL% EQU 1 goto END rem 時間切れならERRORへ rem 範囲内であれば1足してLOOPをもう一回 if %num% EQU 720 goto ERROR set /A num+=1 goto LOOP :ERROR taskkill /F /IM ryoana.exe exit 1 :END exit 0
わざわざEND
とERROR
を用意する必要ない気がするけど、個人的にはこっちが見やすい(あくまで個人的)
18日目の記事はまたも@kunst1080さんです!めちゃ書いててすごい。