web-dev-qa-db-fra.com

Que signifie "@" dans les scripts batch de Windows

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

@echo off

@echo start Eclipse.exe

Que signifie @ ici?

113
Baiyan Huang

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

@echo foo

et

echo foo

Le premier n’a que foo en sortie tandis que le dernier est imprimé

H:\Stuff>echo foo 
foo

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

echo off le désactivera pour le fichier de commandes complet. Cependant, l'appel echo off lui-même serait toujours visible. C'est pourquoi vous voyez @echo off au début des fichiers de commandes. Désactiver la commande en écho et ne répète pas la commande en la désactivant.

Supprimer cette ligne (ou la commenter) 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.

171
Joey

Cela signifie "ne renvoie pas la commande à la sortie standard".

Assez étrangement,

echo off

va envoyer echo off à la sortie! Alors,

@echo off

désactive ce comportement d'écho automatique et l'arrête également pour toutes les commandes futures.

Source: http://www.Microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true

19
Jeremy McGee

_@_ désactive echo pour cette commande. Sans cette ligne, la ligne _echo start Eclipse.exe_ afficherait à la fois la ligne _start Eclipse.exe_ et la ligne de commande _echo start Eclipse.exe_.

_echo off_ désactive l'écho de la commande par défaut.

Donc, _@echo off_ désactive silencieusement les commandes en écho, et seule la sortie de l'auteur du lot destiné à être écrit est réellement écrite.

11
sarnold

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

Sous DOS version 3.3 et ultérieure, masque l'écho d'une commande batch. Toute sortie générée par la commande est répercutée.

Sans cette option, vous pourriez désactiver l'écho des commandes à l'aide de la commande echo off, mais cette commande serait d'abord répercutée.

8

Par défaut, un fichier de commandes affichera sa commande pendant son exécution. Le but de cette première commande qui @ echo off est d'éteindre cet écran. La commande "echo off" désactive l'affichage de l'ensemble du script, à l'exception de la commande "echo off" elle-même. Le signe "at" "@" en face avant fait que la commande s'applique à elle-même.

5

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

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

La ligne précédente affiche pour chaque fichier: la commande Invite, la commande ECHO et le résultat de la commande ECHO. Par ici:

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

Seul le résultat de la commande ECHO est affiché.

5
Aacini

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
2
walid2mi