INDEX
バッチでメッセージ表示
echo コマンド
echo コマンドは、メッセージを表示するか、コマンドエコー機能をオンまたはオフにします。パラメータなしで使用すると、 echo は現在の echo 設定を表示します。
echo [<message>] echo [on | off] echo /?
- on | off
- コマンド エコー機能をオンまたはオフにします。コマンド エコーは既定でオンになっています。
- <message>
- 画面に表示するテキストを指定します。
- /?
- コマンド プロンプトにヘルプを表示します。
- echo | Microsoft Learn
ECHO 出力
改行のみの出力
ECHOコマンドだけだと「ECHO は <ON> です。」と出力される。
以下のようにしてECHOコマンドを実行します。ECHOの後に空白を入れないことが重要です。
ECHO. ECHO: ECHO\ ECHO/
また、未定義の環境変数を ECHO で表示する場合、表示テキストを指定されていない場合と同じとなり「ECHO は <OFF> です。」と表示される。これを回避するには、下記の様に「.」などを使用する
ECHO.%undef_val%
改行しない出力
Linux の echo コマンドであれば、「-n」オプションを指定することで、改行せずにメッセージを表示できる。
$ echo -n "hello"; echo -n " world!" hello world!
しかし、DOS/Windows の echo コマンドには、「-n」オプションがない。
下記のコマンドで「echo -n MESSAGE」相当の改行しないメッセージ表示ができる。
SET /P ="MESSAGE" < NUL
※「SET /P 変数=[プロンプト文字列]」で、プロンプト文字列を表示した後、ユーザに入力を求め、それを環境変数にセットするコマンド。だが、環境変数名は省略可能で、標準入力を NUL にすることで、ユーザ入力も省略される。
パーセント記号の出力
バッチの中で %1 や %path% は引数や環境変数の内容に置き換えられてしまいます。パーセント記号そのものを表示したい場合は、記号を2つ重ねて記述する。
@ECHO OFF ECHO %%1 の内容は %1 です。 ECHO ECHO %%PATH%% の実行結果は... ECHO %PATH%
特殊記号を表示する
リダイレクトやパイプである "<>|&^" これらの記号そのものを表示したい場合は、直前にキャレット"^"をつけて記述する。
@ECHO OFF ECHO ^< ECHO ^> ECHO ^& ECHO ^| ECHO ^^
環境変数に特殊記号をセットする場合は、エスケープ文字を含めてセットしておく必要がある。
SET VAL=^^^<Hello^^^> ECHO.%VAL% REM 変数 VAL に "^<HOGE^>" がセットされ REM "^<HOGE^>" がECHOで「<HOGE>」と表示される
遅延環境変数の展開が有効(SETLOCAL ENABLEDELAYEDEXPANSION)になっている場合、感嘆符 (!) もエスケープが必要となる。単語または語句を二重引用符で囲み、感嘆符の前にキャレットを付ける("Hello World^!")。もしくは、二重引用符を用いず、二重キャレットで記載する(Hello World^^!)。
制御文字
制御文字は表示するための文字ではなく、モニタやプリンタなどのディバイスを制御するために使われる。例えば、LF (0x0a、Line Feed )は改行を表し、プリンタなどで紙を1行送る。
ベル音
echo コマンドで、ベル文字(0x07, ^G )を出力すると、「システムエラー」のサウンドが鳴る。
C:\> echo ^G ※「^G」は Ctrl + G キー
エスケープシーケンス
ESC (エスケープ)を用いることで、文字の色付けや画面制御が可能になる。次章参照
エスケープシーケンス
エスケープシーケンスは、制御シーケンス 導入子 (CSI, Control Sequence Introducer) 型シーケンス「"ESC["(0x1B, 0x5B / ^[[)」で始まり、各操作を指定する可変パラメータを記述する。
一部は、“オペレーティング システム コマンド”シーケンス (OSC, "Operating system command" sequence) で、こちらは「"ESC]"(0x1B, 0x5D / ^[])」で始まり、最後に「"ESC\"(0x1B, 0x5C / ^[\)」で送信される文字列ターミネータ(<ST>として表さる)で終了する。"BEL"(0x7)もターミネータの変わりとして使用できる。
- コンソール仮想ターミナル シーケンス - Windows Console | Microsoft Learn
文字の色付け
画面制御
ウィンドウ のタイトル
OSC シーケンスで、コンソール ウィンドウのタイトルを指定された文字列に設定する。
ESC ] <種類> ; <ウィンドウタイトル> ST ESC ] <種類> ; <ウィンドウタイトル> BEL
- <種類> は 0、1、2 のいずれか。
- 0: アイコン名とウインドウタイトルをセット
- 1: アイコン名をセット
- 2: ウインドウタイトルをセット
- <ウィンドウタイトル>
ただ、Windows ターミナル(コマンドプロンプト)では、一瞬変更されるが、元に戻される。効かないので、TITLE コマンドを使う。
Putty や Tera Term で、接続した Linux 側から echo コマンドを実行することで、ウィンドウ タイトル を設定できる。
echo -e '\e]0;window_title\e\\'
参考:Tera Term ヘルプ - 対応制御シーケンス - OSCシーケンス
進行状況バー
Windows ターミナル では、ConEmu "進行状況バー" シーケンス ("OSC 9;4") がサポートされている。このシーケンスを利用すると、コマンドライン アプリケーション から ターミナル ウィンドウ に 進行状況バー を表示できる。
Windows ターミナル で 進行状況バー は、「タブ ヘッダーに、進行状況リングとして」「Windows タスク バーに、進行状況バーとして」の2つが表示される。
ESC ] 9 ; 4 ; <state> ; <progress> ST ESC ] 9 ; 4 ; <state> ; <progress> BEL
- <state> は 0、1、2、3、4 のいずれか。
- 0: は既定の状態で、進行状況バーを非表示にする。コマンドが完了したらこの状態にし進行状況の状態をクリアする。
- 1: 進行状況の値を <progress> に、"既定" 状態で設定する。
- 2: 進行状況の値を <progress> に、"エラー" 状態で設定する。
- 3: "不確定" 状態に設定する(<progress> 値は無視される)。 これは、進行状況の値を持たないが、まだ実行中のコマンドに役立つ。
- 4: 進行状況の値を <progress> に、"警告" 状態で設定する。
- <progress> は 0 から 100 の間 (両端を含む) の数字です。
echo ^[]9;4;1;50^[\
- Windows ターミナルで進行状況バーを設定する | Microsoft Learn
最終更新時間:2026年06月01日 21時23分43秒 指摘や意見などあればSandBoxのBBSへ。