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.