バッチファイルで他のプログラムが終了するまでプログレスバーを表示する
バッチファイルで他のプログラムが終了するまでプログレスバーを表示する方法をご紹介します。
コーディング例
@ECHO OFF REM メモ帳を起動 START Notepad.exe REM メモ帳が閉じるまで待機 :Wait TASKLIST | FIND /i "Notepad.exe" > NUL IF NOT ERRORLEVEL 1 SET /p="●" < NUL & TIMEOUT /T 1 > NUL & GOTO Wait REM 改行 ECHO. PAUSE
実行結果
●●●●●●●●●● 続行するには何かキーを押してください ...
コーディング例の4行目でメモ帳を非同期で起動しています。
非同期であるため後続の処理が動きます。
8行目では「TASKLIST」コマンドの出力をパイプ(|)により「FIND」コマンドの入力とし"Notepad.exe"を検索しています。オプションの「/i」により大文字と小文字の区別をしないで検索し、結果を「NUL」へ出力することでメッセージを表示しないようにしています。
9行目の「IF NOT ERRORLEVEL 1」では、8行目でタスクリストに"Notepad.exe"が存在しない場合にERRORLEVELが「1」となりますので、「1」以外の場合に「SET /p="●" < NUL」を実行します。「SET /P="●"」は"●"を表示した後にユーザの入力待ちを行うもので、入力待ち状態で処理が停滞してしまうのを回避するため「< NUL」により空の入力を行ったこととしています。続く「&」により「TIMEOUT /T 1 > NUL」が連続して実行され1秒待機します。続く「&」により「GOTO Wait」が連続して実行され、「Wait」ラベルへ処理を移します。
メモ帳が閉じるまでは7行目~9行目が繰り返され、"●"が出力され続けます。
メモ帳を閉じるとタスクリストから"Notepad.exe"が無くなるため、9行目のERRORLEVELが「1」となりループを抜け、カーソルが"●"の右にあるので、12行目の「ECHO .」により改行を行っています。
以上、バッチファイルで他のプログラムが終了するまでプログレスバーを表示するの紹介でした。