バッチファイルでは標準でプログレスバーを表示する機能はありません。しかし工夫次第で「簡易的な進捗表示」を実装することができます。
ロングランの処理を走らせるときにユーザーに進捗が見えると安心感があり、デバッグ時にも役立ちます。
本記事では、バッチファイルでできるプログレスバー風の表示方法を紹介します。
方法1:進捗バーを文字で描画する
setlocal enabledelayedexpansion
を使って繰り返しごとに「#」を追加していき、進捗を可視化します。
@echo off
setlocal enabledelayedexpansion
set "BAR="
for /L %%i in (1,1,20) do (
set "BAR=!BAR!#"
cls
echo 処理中... [!BAR!]
timeout /t 1 >nul
)
echo 完了しました!
pause
上記では 20 ステップで「#」を積み上げてバーを描画します。
timeout
の秒数を調整すれば進行速度を変えられます。
方法2:進捗率を数値で表示する
「%」表示をするだけでも進捗の目安になります。ループのカウンタを使って計算します。
@echo off
setlocal enabledelayedexpansion
set "MAX=100"
for /L %%i in (1,1,%MAX%) do (
cls
echo 処理中... %%i%%
timeout /t 1 >nul
)
echo 完了しました!
pause
%%i%%
が 1 から 100 まで進むので、シンプルな進捗率表示になります。
方法3:バーとパーセンテージを組み合わせる
見栄えを良くしたい場合は、バーの長さとパーセンテージを併用します。
@echo off
setlocal enabledelayedexpansion
set "MAX=50"
set "BARLEN=20"
for /L %%i in (1,1,%MAX%) do (
set /a PERCENT=%%i*100/%MAX%
set /a FILLED=%%i*%BARLEN%/%MAX%
set "BAR="
for /L %%j in (1,1,!FILLED!) do set "BAR=!BAR!#"
cls
echo 処理中... [!BAR!] !PERCENT!%%
timeout /t 1 >nul
)
echo 完了しました!
pause
BARLEN
でバーの最大長を決め、進行に応じて「#」が追加されます。パーセンテージ表示と組み合わせることで、より「プログレスバー風」に見せられます。
方法4:実処理と組み合わせる
実際のファイル処理やコピー処理と進捗バーを組み合わせることも可能です。例えば一定件数ごとに進捗を更新すれば、簡易的な進捗表示になります。
@echo off
setlocal enabledelayedexpansion
set COUNT=0
for %%F in (*.txt) do (
set /a COUNT+=1
echo 処理中: %%F
rem 実際の処理をここに記述
timeout /t 1 >nul
cls
echo 進捗: !COUNT! 件処理完了
)
echo 完了しました!
pause
まとめ
バッチファイルで本格的な GUI プログレスバーは難しいですが、文字や数値を工夫するだけで進捗表示を再現できます。
方法は大きく以下の4つです。
- バーを文字で積み上げる
- パーセンテージ表示にする
- バーとパーセンテージを組み合わせる
- 実際の処理と組み合わせて動的に表示する
長時間処理を行うバッチでは、これらを活用してユーザーに進捗を見せることで、実用性と利便性を向上させられます。