Il existe plusieurs façons de commenter un fichier de commandes
1) Utilisation de rem
C'est la voie officielle. Il faut apparemment plus de temps pour exécuter que ::
, bien que cela arrête apparemment l'analyse tôt, avant que les carets ne soient traités. L'expansion en pourcentage se produit avant rem et ::
est identifiée, donc une utilisation en pourcentage incorrecte, c'est %~
-à- dire provoquera des erreurs si des pourcentages sont présents. Sécuritaire à utiliser n'importe où dans les blocs de code.
2) L' utilisation d' étiquettes :
, ::
ou :;
etc.
Pour :: comment
, ': commentaire' est un nom d'étiquette non valide car il commence par un caractère non valide. Cependant, il est acceptable d'utiliser deux points au milieu d'une étiquette. Si un espace commence au début de l'étiquette, il est supprimé : label
devient :label
. Si un espace ou deux points apparaissent au milieu de l'étiquette, le reste du nom n'est pas interprété, ce qui signifie que s'il y a deux étiquettes :f:oo
et :f rr
, les deux seront interprétés comme :f
et seule l'étiquette plus tard définie dans le fichier sera sautée. Le reste de l'étiquette est en fait un commentaire. Il existe plusieurs alternatives à ::
, répertoriées ici . Vous ne pouvez jamais goto
ou call
une ::foo
étiquette. goto :foo
etgoto ::foo
ne fonctionnera pas.
Ils fonctionnent bien en dehors des blocs de code mais après une étiquette dans un bloc de code, invalide ou non, il doit y avoir une ligne de commande valide. :: comment
est en effet une autre commande valide. Il l'interprète comme une commande et non comme une étiquette; la commande a la priorité. Quelle est la commande pour cd vers le ::
volume, qui fonctionnera si vous avez exécuté subst :: C:\
, sinon vous obtenez une erreur de volume introuvable. C'est pourquoi :;
est sans doute mieux car il ne peut pas être interprété de cette façon, et est donc interprété comme une étiquette à la place, qui sert de commande valide. Ce n'est pas récursif, c'est-à-dire que l'étiquette suivante n'a pas besoin d'une commande après elle. Voilà pourquoi ils viennent par deux.
Vous devez fournir une commande valide après l'étiquette, par exemple echo something
. Une étiquette dans un bloc de code doit être accompagnée d'au moins une commande valide, de sorte que les lignes viennent par paires de deux. Vous obtiendrez une )
erreur inattendue s'il y a un espace ou une parenthèse fermante sur la ligne suivante. S'il y a un espace entre les deux ::
lignes, vous obtiendrez une erreur de syntaxe non valide.
Vous pouvez également utiliser l'opérateur caret dans le ::
commentaire comme ceci:
@echo off
echo hello
(
:;(^
this^
is^
a^
comment^
)
:;
)
:;^
this^
is^
a^
comment
:;
)
Mais vous avez besoin du suivi :;
pour la raison indiquée ci-dessus.
@echo off
(
echo hello
:;
:; comment
:; comment
:;
)
echo hello
C'est bien tant qu'il y a un nombre pair. C'est sans aucun doute la meilleure façon de commenter - avec 4 lignes et :;
. Avec :;
vous, aucune erreur ne doit être supprimée à l'aide de 2> nul
ou subst :: C:\
. Vous pouvez utiliser subst :: C:\
pour faire disparaître l'erreur de volume introuvable, mais cela signifie que vous devrez également mettre C: dans le code pour éviter que votre répertoire de travail ne devienne ::\
.
Pour commenter à la fin d'une ligne, vous pouvez faire
command &::
ou command & rem comment
, mais il doit toujours y avoir un nombre pair, comme ceci:
@echo off
(
echo hello & :;yes
echo hello & :;yes
:;
)
echo hello
Le premier echo hello & :;yes
a une commande valide sur la ligne suivante, mais pas le second & :;yes
, il en a donc besoin, c'est-à-dire le :;
.
3) Utilisation d'une variable d'environnement non valide
%= comment =%
. Dans un fichier de commandes, les variables d'environnement non définies sont supprimées du script. Cela permet de les utiliser en fin de ligne sans utiliser &
. Il est personnalisé d'utiliser une variable d'environnement non valide, c'est-à-dire qui contient un signe égal. L'égalité supplémentaire n'est pas requise mais donne un aspect symétrique. De plus, les noms de variables commençant par "=" sont réservés aux variables dynamiques non documentées. Ces variables dynamiques ne se terminent jamais par "=", donc en utilisant un "=" au début et à la fin du commentaire, il n'y a aucune possibilité de conflit de nom. Le commentaire ne peut pas contenir %
ou :
.
@echo off
echo This is an example of an %= Inline Comment =% in the middle of a line.
4) En tant que commande, rediriger stderr vers nul
@echo off
(
echo hello
;this is a comment 2> nul
;this is another comment 2> nul
)
5) À la fin d'un fichier, tout ce qui se trouve après une parenthèse non fermée est un commentaire
@echo off
(
echo hello
)
(this is a comment
this is a comment
this is a comment