Windowsバッチスクリプトでの「@」の意味


131

私は@そのような文脈で使用されているのを見ました:

@echo off

@echo start eclipse.exe

@ここはどういう意味ですか?

回答:


196

それぞれのコマンドを出力しないことを意味します。次の2つのバッチファイルを比較します。

@echo foo

そして

echo foo

前者はfoo出力としてしかありませんが、後者は出力します

H:\Stuff>echo foo 
foo

(ここでは、少なくとも)。ご覧のように、実行されたコマンドも表示されます。

echo off完全なバッチファイルに対してこれをオフにします。ただし、echo off通話自体は引き続き表示されます。これが@echo off、バッチファイルの先頭に表示される理由です。コマンドのエコーオフにし、コマンドをエコーしないでオフにします。

エラーメッセージの前に何が実行されているかを確認できるため、その行を削除する(またはコメント化する)ことは、多くの場合、より複雑なバッチファイルで役立つデバッグツールです。



14

@無効は、その1つのコマンドのエコー。これがないと、echo start eclipse.exe行は意図start eclipse.exe echo start eclipse.exe行の両方を印刷します。

echo offバイ・デフォルトコマンドエコーがオフになります。

したがって@echo off、コマンドのエコーをサイレントにオフにし、実際に書き込まれる予定のバッチ作成者のみが出力されます。


11

DOSから意味を継承しています。@

DOSバージョン3.3以降では、バッチコマンドのエコーを非表示にします。コマンドによって生成された出力はすべてエコーされます。

それがなければ、コマンドを使用してコマンドのエコーをオフにすることができますがecho off、そのコマンドが最初にエコーされます。


リンクが壊れている
ojchase

8

デフォルトでは、バッチファイルは実行時にコマンドを表示します。@echoをオフにするこの最初のコマンドの目的は、この表示をオフにすることです。コマンド「echo off」は、「echo off」コマンド自体を除いて、スクリプト全体の表示をオフにします。先頭の「アットマーク」「@」は、コマンドをそれ自体にも適用できるようにします。


3
他の5年前の投稿のように、投稿にこれ以上の情報は表示されません。
2016年

5

@を含めるもう1つの有効なタイミングFORは、コマンドラインでを使用するときです。例えば:

FOR %F IN (*.*) DO ECHO %F

すべてのファイルの前の行の表示:コマンドプロンプト、ECHOコマンド、およびコマンドの結果ECHO。こちらです:

FOR %F IN (*.*) DO @ECHO %F

ECHOコマンドの結果だけが表示されます。


@PsychoData:それは...あなたはしばらくによって、すでに同じように質問に答え、他の4件の回答に追加の有用な情報を提供する唯一の答えをdownvotedという面白いです
Aacini

6
彼の質問に対する回答ではなかったので、私は反対票を投じました。@が何をするのかを説明することすらしません。すばらしい使用例があればすばらしいですが、それでも彼の質問に対する回答にはなりません。また、私が答えと、それが何をするか、どこから来るのかについての賭けの説明も付け加えたことを知らないかもしれません。私は理由もなく単に反対票を投じなかった。あなたの「答え」は答えではありません。それはやや関連する声明です。
PsychoData 2013年

2

次のように 'scriptBlock'に@を含めることができます。

@(
  echo don't echoed
  hostname
)
echo echoed

特にしないでください:)

for %%a in ("@") do %%~aecho %%~a
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.