バッチファイルで他のプログラムが終了するまでプログレスバーを表示する

バッチファイルバッチ

記事内に広告が含まれています。

バッチファイルで他のプログラムが終了するまでプログレスバーを表示する方法をご紹介します。

コーディング例

@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 .」により改行を行っています。

以上、バッチファイルで他のプログラムが終了するまでプログレスバーを表示するの紹介でした。

システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ