J'ai un fichier batch qui exécute plusieurs scripts python qui font des modifications de table.
Je veux que les utilisateurs commentent les 1-2 scripts python qu'ils ne veulent pas exécuter, plutôt que de les supprimer du fichier de commandes (afin que le prochain utilisateur sache que ces scripts existent en option!)
Je veux également ajouter des commentaires pour attirer leur attention spécifiquement sur les variables dont ils ont besoin pour mettre à jour dans le fichier batch avant de l'exécuter. Je vois que je peux utiliser
REM
. Mais il semble que ce soit plus pour mettre à jour l'utilisateur avec la progression après l'avoir exécuté.
Existe-t-il une syntaxe pour ajouter un commentaire de manière plus appropriée?
batch-file
cmd
comments
comment-conventions
user1397044
la source
la source
Rem Sth
commande ou utiliser cette marque::: Sth
Réponses:
La
rem
commande est en effet pour commentaires. Il ne met à jour intrinsèquement personne après l'exécution du script. Certains auteurs de scripts peuvent l'utiliser de cette manière au lieu deecho
, car, par défaut, l'interpréteur de lots imprime chaque commande avant qu'elle ne soit traitée. Puisque lesrem
commandes ne font rien, il est sûr de les imprimer sans effets secondaires. Pour éviter d'imprimer une commande, préfixez-la avec@
ou, pour appliquer ce paramètre à l'ensemble du programme, exécutez@echo off
. (C'estecho off
pour éviter d'imprimer d'autres commandes;@
c'est pour éviter d'imprimer cette commande avant que le paramètre d'écho ne prenne effet.)Donc, dans votre fichier batch, vous pouvez utiliser ceci:
la source
REM This whole line is a comment
@echo off :: This comment is inline
#
pour les commentaires car#
, de toute évidence, il pourrait ne pas être un indicateur de commentaire valide dans tous les shells que Configure est censé prendre en charge; voir ligne 3.Utilisez
::
ouREM
MAIS (comme les gens l'ont noté):
&
caractère:your commands here & :: commenttttttttttt
IF/ELSE
,FOR
boucles, etc ...) utiliseREM
car::
donne une erreur::
peut échouer danssetlocal ENABLEDELAYEDEXPANSION
la source
cd "C:\Folder" ::this throws a syntax error
git add :: blah this is not a comment
Échoue également avec "fatal: pathspec 'blah' ne correspond à aucun fichier"&
entre le code et le commentaire::
. Pour illustrer, ouvrez l'invite cmd et exécutezdir ::blah
qui ne répertorie pas le contenu de.
et ne se compare pas àdir & ::blah
, qui le fait::
scripts de bogue avecsetlocal ENABLEDELAYEDEXPANSION
etfor
Non, les anciens fichiers batch simples utilisent
REM
de commentaire.ECHO
est la commande qui imprime quelque chose à l'écran.Pour "commenter" les sections du fichier que vous pouvez utiliser
GOTO
. Un exemple de toutes ces commandes / techniques:Que puis-je dire? les fichiers batch sont une relique d'autrefois, ils sont maladroits et moches.
Vous pouvez en lire plus sur ce site Web .
EDIT: modifié un peu l'exemple pour qu'il contienne les éléments que vous recherchez apparemment.
la source
Le :: au lieu du REM était de préférence utilisé à l'époque où les ordinateurs n'étaient pas très rapides. Les lignes REM'ed sont lues puis intégrées. :: 'La ligne ed est ignorée complètement. Cela pourrait accélérer votre code dans "l'ancien temps". De plus, après un REM, vous avez besoin d'un espace, après :: vous n'en avez pas.
Et comme dit dans le premier commentaire: vous pouvez ajouter des informations à n'importe quelle ligne que vous ressentez le besoin de
Quant au saut de pièces. Mettre REM devant chaque ligne peut prendre beaucoup de temps. Comme mentionné, l'utilisation de GOTO pour ignorer des parties est un moyen facile d'ignorer de gros morceaux de code. Assurez-vous de définir un: LABEL au point où vous souhaitez que le code continue.
la source
::
etrem
également.\n
et commence l' analyse syntaxique à nouveau [ la citation nécessaire]Commentaires sur plusieurs lignes
S'il y a un grand nombre de lignes que vous souhaitez commenter, il sera préférable de faire des commentaires sur plusieurs lignes plutôt que de commenter chaque ligne.
Voir cet article de Rob van der Woude sur les blocs de commentaires :
la source
if
au lieu degoto
stackoverflow.com/q/9074476/995714 ss64.com/vb/syntax-hybrid.html stackoverflow.com/a/34512715/995714Mettre les commentaires sur la même ligne avec les commandes: utilisez
& :: comment
Explication:
&
sépare deux commandes , donc dans ce cascolor C
est la première commande et:: set red font color
est la seconde.Important:
Cette déclaration avec commentaire semble intuitivement correcte:
mais ce n'est pas une utilisation valide du commentaire. Cela ne fonctionne que parce qu'il
goto
ignore tous les arguments après le premier. La preuve est simple, celagoto
n'échouera pas non plus:Mais une tentative similaire
échoue exécutant la commande en raison de 4 arguments inconnus à la
color
commande suivante :::
,grey
,on
,blue
.Cela ne fonctionnera que comme:
L'esperluette est donc inévitable.
la source
Vous pouvez commenter quelque chose en utilisant
::
ouREM
:ou
Pour le faire sur la même ligne qu'une commande, vous devez ajouter une esperluette:
ou
Remarque:
::
en logique imbriquée (IF-ELSE
,FOR
boucles, etc ...) provoquera une erreur. Dans ces cas, utilisezREM
plutôt.la source
@Rado
été fusionnée en réponse à ce moment-là et merci pour cela, j'ai simplement préféré un autre style pour la réponse et utilisé un style différent.C'est un vieux sujet et j'aimerais ajouter ma compréhension ici pour élargir les connaissances de ce sujet intéressant.
La principale différence entre REM et :: est:
REM est une commande elle-même, alors que :: n'est PAS.
Nous pouvons traiter :: comme un jeton qui dès que l'analyseur CMD rencontre le premier espace non vide d'une ligne est ceci :: token, il sautera simplement la ligne entière et lira la ligne suivante. C'est pourquoi REM doit être suivi d'au moins un espace vide pour pouvoir fonctionner comme un commentaire pour la ligne, tandis que :: n'a pas besoin d'espace vide derrière.
Ce REM est une commande elle-même peut être mieux compris à partir de la syntaxe FOR suivante
La syntaxe FOR de base est la suivante
ici
<Command>
peut être n'importe quelle commande valide Nous pouvons donc écrire la ligne de commande valide suivante commerem
est une commandeCependant, nous NE POUVONS PAS écrire la ligne suivante car ce
::
n'est pas une commandela source
::
est une étiquette (non valide) (ce qui explique son comportement) et ne doit donc pas être utilisée (bien qu'elle soit encore assez courante)Vous pouvez ajouter des commentaires à la fin d'un fichier de commandes avec cette syntaxe:
Assurez-vous simplement de ne jamais utiliser de parenthèses fermantes.
Attributions: Leo Guttirez Ramirez sur https://www.robvanderwoude.com/comments.php
la source