目次
コマンドプロンプトに出力
文字列を出力するには「echo」コマンドを使います。
コマンドプロンプトへの出力は、
1 |
echo ここに書いた内容が出力されます |
と書けば、「echo」コマンドの右側に記述した内容が表示されます。
ファイルに出力
ファイルへの出力は「> [ファイル名]」を使って出力先のファイル名を指定します。コマンドプロンプトから以下のコマンドを実行します。
1 |
echo ここに書いた内容が出力されます > file.txt |
今度はコマンドプロンプトには何も表示されませんが、バッチファイルを実行したフォルダに「file.txt」というファイルが新しくできているはずです。
その中を見ると、「ここに書いた内容がファイルに出力されます」の文字が出力されています。
続けて、
1 |
echo 内容を上書きする > file.txt |
とコマンドを実行すれば、前の内容は上書きされ、「file.txt」ファイルには「echo 内容を上書きする」と書き込まれます。
ファイルの前の内容を残したい場合は「>>」を使います。
1 |
echo ファイルに追記する >> file.txt |
を実行すると、ファイル内容は、
となります。このように、「>>」を使用したファイルへの出力では、元のファイルの内容に追記されていることが分かります。
改行の出力
「echo」を使用して改行したい場合に、
1 |
echo |
と書いてしまうと、以下のような表示が出てしまいます。
これは、「echo」という単独でのコマンドが「エコー機能がONかOFFかを確認する」コマンドだからです。(※これについては、「エコー機能をOFFにしてコマンドを表示させない」で後述します)
なので、改行をする場合は以下のコマンドを使います。
1 |
echo. |
「echo」コマンドの直後にピリオド「.」を付けました。「echo」と「.」の間にスペースは必要ないことに注意して下さい。これで、改行が表現できるようになります。
特殊文字の出力
バッチファイルには「特殊文字」といって、そのまま書くだけでは表示できない文字が存在します。例えば、「>」や「%」などがそうです。
これは、その文字にコードを書くための役割が割り当てられているためです。例えば、「%」は変数を表すための役割(%variable%)が既に与えられています。したがって、「%」を文字列として表示しようと思うと、
1 |
echo %% |
のようにする必要があります。
また、前節で解説したように「>」にはファイル出力の役割が当てられていました。
これらの特殊文字を表示するには、以下のように記述する必要があります。
表示したい文字 | 記述方法 |
< | ^< |
> | ^> |
| | ^| |
& | ^& |
^ | ^^ |
% | %% |
基本的には文字の直前に「^」を付ければよいですが、「%」だけが特別で「%%」と二つ重ねて書きます。
1 2 3 4 5 6 |
echo ^< echo ^> echo ^| echo ^& echo ^^ echo %% |
エコー機能をオフにしてコマンドを表示させない
エコー機能というのは、ファイルに書いたコマンドを実行する場合に、コマンドプロンプトに逐一コマンドを表示させる機能のことです。
例として、以下のコマンドをバッチファイルに書き込みコマンドプロンプトで実行してみます。
1 |
echo やっほー |
すると、コマンドプロンプトに一度ファイルに書いたコマンド内容「echo やっほー」が出力され、コマンドの実行結果が表示されます(下図)。
このように、ファイルに書いたコマンドが逐一コマンドプロンプトに出力される状態がエコー機能がオンになっている状態です。
エコー機能をOFFにするにはコマンドの前に「@」をつけて、
1 |
@echo やっほー |
とします。これで、コマンドの出力がなくなります。
「echo やっほー」の出力がなくなりました。
しかし、この方法は滅多に使いません。理由は、全てのコマンドに@を付けていくのは面倒だからです。
そこで、プログラム全体のエコー機能をオフにする「@echo off」をプログラムのはじめに書いておきます。
1 2 3 |
@echo off echo やっほー |
こうすることで、以下に書いたすべてのコマンドの画面出力がなくなります。
途中からコマンドの出力を復活させたいときは「@echo on」を書きます。
1 2 3 4 5 6 7 |
@echo off echo やっほー OFF @echo on echo やっほー ON |
下記ですが、正確には、”る”と”>”の間のスペースも追加されます。
また、ファイルの最終行に、文字列0の行が追加されます。
echo ファイルに追記する >> file.txt