Que signifie " @ " dans les scripts batch Windows

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

@echo off

@echo start eclipse.exe

Que veut dire @ ici?

98
demandé sur ROMANIA_engineer 2011-12-13 12:10:01

7 réponses

Cela signifie Ne pas afficher la commande respective. Comparez les deux fichiers batch suivants:

@echo foo

Et

echo foo

Le premier n'a que foo comme 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 off désactivera cette option pour le fichier batch complet. Cependant, l'appel echo off lui-même serait toujours visible. C'est pourquoi vous voyez @echo off au début des fichiers batch. Désactiver la commande en écho et ne font pas écho à la commande en l'éteignant.

Supprimer cette ligne (ou la commenter) est souvent un outil de débogage utile dans des fichiers batch plus complexes car vous pouvez voir ce qui est exécuté avant un message d'erreur.

148
répondu Joey 2011-12-13 08:13:02

Cela signifie "Ne pas faire écho à la commande à la sortie standard".

Assez étrangement,

echo off

Enverra echo off à la sortie! Donc,

@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

15
répondu Jeremy McGee 2011-12-13 08:14:32

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

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

Donc @echo off éteint silencieusement l'écho de la commande, et seule la sortie de l'auteur du lot destiné à être écrit est réellement écrite.

10
répondu sarnold 2011-12-13 08:13:18

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

Dans 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 cela, vous pouvez désactiver l'écho de commande en utilisant la commande echo off, mais cette commande serait d'abord répercutée.

7
répondu Damien_The_Unbeliever 2011-12-13 08:13:13

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

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

Ligne Précédente montrent pour chaque fichier: l'invite de commande, la ECHO commande, et le résultat de ECHO commande. De cette façon:

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

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

5
répondu Aacini 2011-12-13 17:32:17

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

@(
  echo don't echoed
  hostname
)
echo echoed

Et surtout ne le faites pas:)

for %%a in ("@") do %%~aecho %%~a
2
répondu walid2mi 2011-12-13 21:20:16

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

2
répondu Muhammad Faizan Khan 2016-10-20 10:12:47