メッセージを出力する echo

コマンドプロンプトやバッチファイルで利用する基本的なコマンドのひとつにechoがある。このコマンドには2つの機能があり、ひとつはコマンドプロンプトやバッチファイルエコーイングのオン・オフの切り替え、もう一つは引数に指定されたメッセージを出力する機能だ。

コマンドプロンプトやバッチファイルエコーイングのオン・オフ切替は次のように実施する。

コマンドプロンプトやバッチファイルエコーイングの切り替え

echo [on | off]

メッセージの出力は次のように引数にメッセージを指定すればよい。

echoでメッセージを出力する

echo メッセージ

コマンドプロンプトでecho offと実行すると、次の行からコマンドプロンプトが表示されなくなる。echo onと実行すると再びプロンプトが表示される。

バッチファイルではコマンドの実行前にコマンド行がそのまま表示される(エコーイング)。Linuxでは/bin/shのオプションに-xを指定した状態でシェルスクリプトを実行すると似たような状態になる。バッチファイルでecho offと実行すると、このエコーイングが無効になる。バッチファイルを実行したときにいちいち実行されるコマンドが表示されるのが煩雑に感じる場合にはバッチフィアルの先頭でecho offを実行すればよい。

なお、echoでonやoffそのものを表示するにはダブルクォーテーションやシングルクォーテーションで囲めばよい。そのほか、空行を出力するにはecho.など、いくつかルールがある。そのあたりを表にまとめると次のようになる。

コマンド 内容
echo メッセージ メッセージを出力。^、|、>、<を出力するには^^、^|、^>、^<と記述する
echo. 空行を出力
echo on コマンドプロンプトでプロンプト表示を有効化。バッチファイルではコマンドエコーを有効化(デフォルト)。onそのものを出力する場合にはダブルクォーテーションやシングルクォーテーションで括る
echo off コマンドプロンプトでプロンプト表示を無効化。バッチファイルでコマンドエコーを無効化。offそのものを出力する場合にはダブルクォーテーションやシングルクォーテーションで括る

echoは特にバッチファイルを作成する場合にはよく使うことになる基本的なコマンドだ。それほど難しいコマンドではないので、使い方は覚えてしまいたい。

echoコマンドの実行サンプル

コマンドプロンプトでechoコマンドを実行すると次のようになる。echoでメッセージの表示ができること、echo offでコマンドプロンプトが表示されなくなること、echo onでコマンドプロンプトが復帰してくることなどがわかると思う。

echoコマンドの実行サンプル

echoコマンドはバッチファイルでよく使うことになる。次に簡単なバッチファイルのサンプルを示す。これはカレントディレクトリにテキストファイルがあるかどうかを判定して、メッセージを出力し、最後にdirコマンドを実行するというものだ。

echobatch_01.bat - バッチファイルのサンプル

if not exist *.txt (
    echo.
    echo =====================================================
    echo カレントディレクトリにテキストファイルは存在しません。
    echo =====================================================
    echo.
) else (
    echo.
    echo =====================================================
    echo カレントディレクトリにテキストファイルが存在します。
    echo =====================================================
    echo.
)

dir

このバッチファイルを実行すると次のようになる。コマンドが実行される前にそのコマンドの内容が表示されている(エコーイング)されていることがわかる。

echobatch_01.batの実行結果

バッチファイルではコマンドの前に@を付けるとエコーイングを無効化することができる。echobatch_01.batにそれを適用すると次のようになる。実行の単位の先頭に@を付加している。

echobatch_02.bat - @でエコーイングを無効化したサンプル

@if not exist *.txt (
    echo.
    echo =====================================================
    echo カレントディレクトリにテキストファイルは存在しません。
    echo =====================================================
    echo.
) else (
    echo.
    echo =====================================================
    echo カレントディレクトリにテキストファイルが存在します。
    echo =====================================================
    echo.
)

@dir

このバッチファイルを実行すると次のようになる。

echobatch_02.batの実行結果

これと同じことがバッチファイルの先頭に@echo offと書くことで実現できる。echo offでエコーイングを無効にするのだが、echo offそのもののエコーイングも無効化したいので@を付けて@echo offと記述する。

echobatch_03.bat - @echo offでエコーイングを無効化したサンプル

@echo off

if not exist *.txt (
    echo.
    echo =====================================================
    echo カレントディレクトリにテキストファイルは存在しません。
    echo =====================================================
    echo.
) else (
    echo.
    echo =====================================================
    echo カレントディレクトリにテキストファイルが存在します。
    echo =====================================================
    echo.
)

dir

このバッチファイルを実行すると次のようになる。

echobatch_03.batの実行結果

個別に@を指定した場合と同じ結果になっていることがわかる。この行をコメントアウトすればエコーイングが実施されるのでデバッグにも利用できる。バッチファイルの先頭に@echo offと書いておくのはなかなか便利な方法だ。

このようにechoコマンドはシンプルで扱いやすい。プロンプトの表示やエコーイングの有効・無効を切り替えるコマンドにもなっている。よく使うコマンドなので覚えておきたい。

参考資料