Qu'est-ce que le signe arobase (@) dans un fichier de commandes et que fait-il?

101

Un utilisateur à distance familier avec les scripts par lots Windows / DOS reconnaîtra cette ligne:

@echo off

Pendant de nombreux jours, j'ai été satisfait du sentiment que le @est comment echo offest censé être écrit en haut du lot et c'est tout.

Cependant, récemment, je suis tombé sur une ligne comme celle-ci:

@php foo bar

et une autre ligne comme celle-ci:

@call \\network\folder\batch.bat

Cela a renforcé mes soupçons qui @ont plus que le simple echochangement de mode. Cependant, @n'est pas répertorié dans Windows XP: Référence de ligne de commande AZ que j'essaie d'utiliser comme référence et donc je ne suis pas sûr de savoir comment trouver des informations définitives à ce sujet:

Quel est le @lot de connexion, quelle est sa terminologie et que fait-il?

n611x007
la source
3
Rien à ajouter à la réponse ismail. Mais juste pour les références futures, la réponse est incluse dans la documentation indiquée «Référence de ligne de commande AZ» sous la Remarkssection de la echocommande.
MC ND
2
@MCND Je vois, merci! Je ne savais pas que c'était spécifique à l'écho ... eh bien, je suppose que j'ai mal compris l'importance du echotraitement par lots. Voici le lien vers echo # remarques .
n611x007
2
Je l'ai entendu appelé un "silencieux", mais je n'ai que des preuves anecdotiques à ce sujet.
RustyTheBoyRobot

Réponses:

152

Au symbole - @

Le @ symboldit au processeur de commandes d'être moins bavard; pour afficher uniquement la sortie de la commande sans la montrer en cours d'exécution ou les invites associées à l'exécution. Lorsqu'il est utilisé, il est ajouté au début de la commande, il n'est pas nécessaire de laisser un espace entre le "@" et la commande.

Lorsque "echo" est réglé sur "off", il n'est pas nécessaire d'utiliser "@" car le réglage de "echo" sur "off" rend ce comportement automatique. "Echo" est généralement réglé sur "on" par défaut lorsque l'exécution d'un script commence. C'est la raison pour laquelle "@echo off" est couramment utilisé, pour désactiver l'écho sans afficher l'acte de le désactiver.

echo verbose
@echo less verbose
pause
Ensoleillé
la source
3
Accepté celui-ci pour l'explication sur site de sans ... aucune invite associée à l'exécution , et pour dire des choses comme (verbosité du) processeur de commandes , et parler de l'espace. :) Beau lot de test aussi!
n611x007
7
Apparemment, cela est évident pour tout le monde mais je ne savais pas que cela ne fonctionne que lorsqu'il est exécuté à partir d'un .batfichier, c'est-à-dire que cela ne fonctionne pas directement à partir de la ligne de commande.
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. C'est vrai. J'ai également constaté que cela pouvait provoquer des effets secondaires indésirables. Par exemple, l'utilisation de la @copysuite d'une clip < file.txt & pausecommande pour une raison quelconque amène mon presse-papiers à copier le texte 1 file copied.
dgo le
La mauvaise chose est que je ne peux pas le document officiel dessus!
Robert le
-1

Non seulement le symbole «at» placé au début masque la commande, mais il peut également être utilisé pour ajouter des arguments de commande stockés dans un fichier texte. La syntaxe est les commandes exe @ (si je me souviens bien)

Yuri Constantinoff
la source
3
Non, si vous essayez d'exécuter quelque chose comme si myExe@myCommandscela is not recognized as an internal or external command
échouait
@jeb, Que se passe-t-il lorsque vous mettez des espaces autour du @symbole? Je ne peux pas le faire fonctionner, mais je l'ai vu utilisé dans des fichiers batch ...
jdk1.0