Was ist das at-Zeichen (@) in einer Batch-Datei und was macht es?

101

Personen, die mit Windows / Dos-Batch-Skripten aus der Ferne vertraut sind, erkennen diese Zeile:

@echo off

Für viele-viele Tage war ich mit dem Gefühl glücklich , dass das @ist , wie echo offam Anfang der Partie geschrieben werden sollte und das ist es.

Vor kurzem bin ich jedoch auf eine Linie wie diese gestoßen :

@php foo bar

und eine andere Zeile wie diese:

@call \\network\folder\batch.bat

Dies verstärkte meinen Verdacht, dass @es mehr als nur einen echoModuswechsel gibt. Ist @jedoch nicht in der Windows XP: Befehlszeilenreferenz AZ aufgeführt, die ich als Referenz zu verwenden versuche, und daher bin ich mir nicht sicher, wie ich endgültige Informationen dazu finden kann:

Was ist das @Anmelde-Batch, wie lautet die Terminologie dafür und was macht es?

n611x007
quelle
3
Der ismail-Antwort gibt es nichts hinzuzufügen. Nur für zukünftige Verweise ist die Antwort in der angegebenen Dokumentation "Befehlszeilenreferenz AZ" im RemarksAbschnitt des echoBefehls enthalten.
MC ND
2
@MCND Ich verstehe, danke! Ich wusste nicht, dass es echo-spezifisch ist ... nun, ich glaube, ich habe die Wichtigkeit des Chargens falsch verstanden echo. Hier ist der Link zu Echo # Bemerkungen .
n611x007
2
Ich habe gehört, dass es "Squelch" genannt wird, aber ich habe nur anekdotische Beweise dafür.
RustyTheBoyRobot
3
Mögliches Duplikat von Was bedeutet "@" in Windows-Batch-Skripten
gunr2171

Antworten:

152

Am Symbol - @

Das @ symbolweist den Befehlsprozessor an, weniger ausführlich zu sein. um nur die Ausgabe des Befehls anzuzeigen, ohne dass die Ausführung oder die mit der Ausführung verbundenen Eingabeaufforderungen angezeigt werden. Wenn es verwendet wird, wird es dem Anfang des Befehls vorangestellt. Es ist nicht erforderlich, ein Leerzeichen zwischen dem "@" und dem Befehl zu lassen.

Wenn "echo" auf "off" gesetzt ist, muss "@" nicht verwendet werden, da dieses Verhalten automatisch eingestellt wird, wenn "echo" auf "off" gesetzt wird. "Echo" ist normalerweise standardmäßig auf "Ein" gesetzt, wenn die Ausführung eines Skripts beginnt. Dies ist der Grund, warum "@echo off" häufig verwendet wird, um das Echo auszuschalten, ohne den Vorgang des Ausschaltens anzuzeigen.

echo verbose
@echo less verbose
pause
Sonnig
quelle
3
Akzeptierte diese für die Vor-Ort-Erklärung von ohne ... irgendwelche mit der Ausführung verbundenen Eingabeaufforderungen und für das Sagen von Dingen wie (Ausführlichkeit) des Befehlsprozessors und das Erzählen über den Speicherplatz. :) Schöne Testcharge auch!
n611x007
7
Anscheinend ist dies für alle offensichtlich, aber ich wusste nicht, dass dies nur funktioniert, wenn es aus einer .batDatei ausgeführt wird, dh es funktioniert nicht direkt über die Befehlszeile.
doABarrelRoll721
1
When "echo" is set to "off" it is not necessary to use "@" because setting "echo" to "off" causes this behavior to become automatic. Das ist wahr. Ich habe auch festgestellt, dass dies unerwünschte Nebenwirkungen verursachen kann. Wenn Sie beispielsweise aus irgendeinem Grund @copyeinem clip < file.txt & pauseBefehl folgen , kopiert meine Zwischenablage den Text 1 file copied.
dgo
Das Schlimme ist, ich kann nicht das offizielle Dokument darüber!
Robert
-2

Das am Anfang stehende "at" -Symbol verbirgt nicht nur den Befehl, sondern kann auch zum Anhängen von in einer Textdatei gespeicherten Befehlsargumenten verwendet werden. Die Syntax lautet exe @ -Befehle (wenn ich mich richtig erinnere)

Yuri Constantinoff
quelle
3
Nein, wenn Sie versuchen, so etwas auszuführen, myExe@myCommandsschlägt es fehl mitis not recognized as an internal or external command
jeb