batファイルの初めに「@echo off」という記載があると思いますが、この意味は何でしょうか?
なんの効果があるのでしょうか?「@echo off」が無ければどうなるのでしょうか?
そういった疑問に現役エンジニアの筆者が実例を用いて答えます。
windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。
batファイルの初めに記述している「@echo off」の意味を理解してバッチファイルを作成しましょう!
bat(バッチ)ファイルで「@echo off」の意味や効果

batファイルで「@echo off」の意味と効果の説明は一発で言う事は難しいです。
わかりやすいように2段階に分けて説明します。
- 「echo off」の意味と効果とは
- 「@echo off」の意味と効果とは
「echo off」の意味とは
「echo off」の意味はbatファイルに記述したコマンドを表示しないという意味と効果があります。
下のようなbatファイルがあるとします。
rem echoテスト
echo test1
echo test2
pause

echoで文字列を表示させます。このbatファイルを実行してみます。


batは上の結果のようにファイルに記述したコマンドを全て表示させる設定がデフォルトです。
これでは実行結果が見にくくて仕方ありません。そこで出てくるのが「echo off」です。
記述したコマンドを表示しなくなる効果があります。
先程のbatファイルの1行目に「echo off」を記述してみます。
echo off
rem echoテスト
echo test1
echo test2
pause
これで記述したコードを表示しなくなります。ではこのbatファイルを実行してみます。

シンプルにコマンド結果だけが表示され、見やすくなりました。
echoで日本語が文字化けした場合の対処法


「@echo off」の意味とは
そこで出てくるのが「@」です。これは「echo off」自体も表示させなくします。
では先程のbatファイルの「echo off」を「@echo off」に変更して見ます。
@echo off
rem echoテスト
echo test1
echo test2
pause
これで「echo off」自体も表示されないはずです。ではこのbatファイルを実行してみます。

シンプルにコマンド実行結果だけが表示されました。
応用:echo以外のコマンドで出る文字も非表示にする方法


echo以外のコマンドでも不要な文字が表示される時があります。その文字を消す事はできないでしょうか?
例えばcopyコマンドです。
以下のbatファイルを実行してみます。
@echo off
copy test.txt test_copy.txt
pause
batファイルと同じ階層の「test.txt」ファイルを「text_copy.txt」という名前でコピーするバッチです。
実行結果は以下のようになります。


デフォルトで文字が表示されます。この文字が不要な場合は「nul」を使用します。
@echo off
copy test.txt test_copy.txt > nul
pause
copyコマンドは実行されますが、文字は表示されなくなります。
nulとは空白やゴミ箱のようなものです。
ではこのbatファイルを実行してみます。


デフォルトで出るメッセージも出なくなりました。コピー自体はされています。