Que signifie «@» dans les scripts batch Windows


132

J'ai vu @est utilisé dans de tels contextes:

@echo off

@echo start eclipse.exe

Que @signifie ici?

Réponses:


197

Cela signifie ne pas sortir la commande correspondante. Comparez les deux fichiers batch suivants:

@echo foo

et

echo foo

Le premier n'a que foocomme sortie tandis que le second imprime

H:\Stuff>echo foo 
foo

(ici, au moins). Comme on peut le voir, la commande exécutée est également visible.

echo offdésactivera cette option pour le fichier de commandes complet. Cependant, l' echo offappel lui-même serait toujours visible. C'est pourquoi vous voyez @echo offau début des fichiers batch. Désactivez l'écho de commande et ne faites pas écho à la commande en l'éteignant.

La suppression de cette ligne (ou la mise en commentaire) est souvent un outil de débogage utile dans les fichiers de commandes plus complexes, car vous pouvez voir ce qui est exécuté avant un message d'erreur.



14

Le @désactive l'écho pour cette commande. Sans cela, la echo start eclipse.exeligne imprimerait à la fois la ligne prévue start eclipse.exe et la echo start eclipse.exeligne.

Le echo offdésactive l'écho de la commande par défaut.

@echo offDésactive donc silencieusement l'écho des commandes et seule la sortie de l'auteur du lot destiné à être écrit est réellement écrite.


11

Il hérite de la signification de DOS. @ :

Dans les versions DOS 3.3 et ultérieures, masque l'écho d'une commande batch. Toute sortie générée par la commande est renvoyée.

Sans cela, vous pourriez désactiver l'écho de commande à l'aide de la echo offcommande, mais cette commande serait renvoyée en premier.


Le lien est maintenant rompu
ojchase

8

Par défaut, un fichier de commandes affichera sa commande lors de son exécution. Le but de cette première commande que @echo off est de désactiver cet affichage. La commande "echo off" désactive l'affichage pour tout le script, à l'exception de la commande "echo off" elle-même. Le signe "at" "@" devant fait que la commande s'applique également à elle-même.


3
Je ne peux pas voir plus d'informations ou de meilleures informations dans votre message, comme dans les autres messages vieux de 5 ans.
jeb

5

Un autre moment utile pour inclure @ est lorsque vous utilisez FORdans la ligne de commande. Par exemple:

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

La ligne précédente affiche pour chaque fichier : l'invite de commande, la ECHOcommande et le résultat de la ECHOcommande. Par ici:

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

Seul le résultat de la ECHOcommande est affiché.


@PsychoData: C'est drôle que vous ayez voté à la baisse la seule réponse qui fournit une information utile supplémentaire aux 4 autres réponses qui, d'ici là, répondaient déjà à la question de la même manière ...
Aacini

6
J'ai voté contre parce que ce n'était pas une réponse à sa question. Vous ne donnez même pas une explication de ce que fait le @. Si vous avez des exemples d'utilisation sympas, tant mieux, mais ce n'est toujours pas une réponse à sa question. Vous ne savez peut-être pas que j'ai également voté pour la réponse avec l'explication du pari de ce qu'elle fait et d'où elle vient. Je n'ai pas simplement voté sans raison. Votre «réponse» n'est pas une réponse. C'est une déclaration quelque peu liée.
PsychoData

2

vous pouvez inclure @ dans un 'scriptBlock' comme ceci:

@(
  echo don't echoed
  hostname
)
echo echoed

et surtout ne fais pas ça :)

for %%a in ("@") do %%~aecho %%~a
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.