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?
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.
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
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.
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.
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é.
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
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.