Was bedeutet "@" in Windows-Batch-Skripten?

131

Ich habe gesehen, @wird in solchen Zusammenhängen verwendet:

@echo off

@echo start eclipse.exe

Was @bedeutet hier?

Baiyan Huang
quelle

Antworten:

196

Es bedeutet, den jeweiligen Befehl nicht auszugeben. Vergleichen Sie die folgenden zwei Batchdateien:

@echo foo

und

echo foo

Ersteres hat nur fooals Ausgabe, während letzteres druckt

H:\Stuff>echo foo 
foo

(zumindest hier). Wie zu sehen ist, ist auch der ausgeführte Befehl sichtbar.

echo offschaltet dies für die vollständige Batch-Datei aus. Der echo offAnruf selbst wäre jedoch weiterhin sichtbar. Aus diesem Grund sehen Sie @echo offam Anfang von Batch-Dateien. Schalten Sie Befehl Echo und do echo den Befehl nicht drehen sie ab.

Das Entfernen (oder Auskommentieren) dieser Zeile ist häufig ein hilfreiches Debugging-Tool in komplexeren Batchdateien, da Sie sehen können, was vor einer Fehlermeldung ausgeführt wird.

Joey
quelle
14

Das @Deaktiviert das Echo für diesen einen Befehl. Ohne sie echo start eclipse.exewürde die Zeile sowohl die beabsichtigte start eclipse.exe als auch die echo start eclipse.exeZeile drucken .

Das echo offdeaktiviert das Echo des Standardbefehls.

@echo offDeaktiviert also stillschweigend das Echo des Befehls und gibt nur den Batch-Autor aus, der geschrieben werden soll.

Sarnold
quelle
11

Es erbt die Bedeutung von DOS. @ :

In DOS Version 3.3 und höher wird das Echo eines Stapelbefehls ausgeblendet. Jede vom Befehl erzeugte Ausgabe wird wiedergegeben.

Ohne sie könnten Sie das Echo des echo offBefehls mit dem Befehl deaktivieren , aber dieser Befehl wird zuerst wiedergegeben.

Damien_The_Unbeliever
quelle
Link ist jetzt unterbrochen
ojchase
8

Standardmäßig zeigt eine Batchdatei ihren Befehl während der Ausführung an. Der Zweck dieses ersten Befehls, den @echo ausschaltet, besteht darin, diese Anzeige auszuschalten. Der Befehl "Echo aus" schaltet die Anzeige für das gesamte Skript aus, mit Ausnahme des Befehls "Echo aus". Das "at" -Zeichen "@" vorne bewirkt, dass der Befehl auch auf sich selbst angewendet wird.

Muhammad Faizan Khan
quelle
3
Ich kann in Ihrem Beitrag keine weiteren oder besseren Informationen sehen, wie in den anderen 5 Jahre alten Beiträgen.
Jeb
5

Eine weitere nützliche Zeit, um @ einzuschließen, ist die Verwendung FORin der Befehlszeile. Beispielsweise:

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

Die vorherige Zeile zeigt für jede Datei : die Eingabeaufforderung, den ECHOBefehl und das Ergebnis des ECHOBefehls. Diesen Weg:

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

Es wird nur das Ergebnis des ECHOBefehls angezeigt.

Aacini
quelle
@ PsychoData: Es ist lustig, dass Sie die einzige Antwort abgelehnt haben, die eine nützliche Information zusätzlich zu den anderen 4 Antworten liefert, die die Frage im
Laufe
6
Ich habe abgelehnt, weil es keine Antwort auf seine Frage war. Sie erklären nicht einmal, was das @ tut. Wenn Sie coole Anwendungsbeispiele haben, großartig, aber es ist immer noch keine Antwort auf seine Frage. Sie wissen vielleicht auch nicht, dass ich die Antwort mit der Erklärung der Wette, was sie tut und woher sie kommt, positiv bewertet habe. Ich habe nicht ohne Grund abgelehnt. Ihre "Antwort" ist keine Antwort. Es ist eine etwas verwandte Aussage.
PsychoData
2

Sie können @ in einen 'scriptBlock' wie folgt einfügen:

@(
  echo don't echoed
  hostname
)
echo echoed

und vor allem nicht das :)

for %%a in ("@") do %%~aecho %%~a
walid2mi
quelle