J'ai écrit un énorme fichier MS DOS Batch. Pour tester ce fichier de commandes, je n'ai besoin d'exécuter que quelques lignes et je souhaite masquer / commenter le reste.
J'ai quelques lignes de commentaires existantes commençant par ::
donc je ne peux ::
plus utiliser car cela brouillera tous les commentaires.
Comment puis-je résoudre ce problème?
batch-file
comments
dos
user219628
la source
la source
REM
lignes comme lignes de commentaire, cela rend la sortie obscureSi vous souhaitez ajouter REM au début de chaque ligne au lieu d'utiliser GOTO, vous pouvez utiliser Notepad ++ pour le faire facilement en suivant ces étapes:
Répétez les étapes pour décommenter
la source
Ctrl-Q
, cliquez surNotepad++
:Edit -> Comment/Uncomment
.Bien que la
goto
solution soit une bonne option, elle ne fonctionnera pas entre crochets (y compris les commandes FOR et IF). Cependant, vous devez faire attention à la fermeture des crochets et à la syntaxe invalide des commandesFOR
etIF
car elles seront analysées.Mettre à jour
La mise à jour de la réponse de dbenham m'a donné quelques idées. Premièrement - il y a deux cas différents où nous pouvons avoir besoin de commentaires sur plusieurs lignes - dans le contexte d'une parenthèse où GOTO ne peut pas être utilisé et en dehors. Le contexte de l' intérieur , nous pouvons utiliser une autre parenthèse s'il y a une condition qui empêche le code à executed.Though le Thede de code sera toujours analysé et quelques erreurs de syntaxe sera détecté (
FOR
,IF
, supports mal fermés, mauvaise extension des paramètres ..). Donc , si c'est possible, il vaut mieux utiliser GOTO.Bien qu'il ne soit pas possible de créer une macro / variable utilisée comme étiquette - mais il est possible d'utiliser des macros pour les commentaires des crochets, deux astuces peuvent encore être utilisées pour rendre les commentaires GOTO plus symétriques et plus agréables (du moins pour moi). Pour cela, je vais utiliser deux astuces - 1) vous pouvez mettre un seul symbole devant une étiquette et goto sera toujours en mesure de le trouver (je n'ai aucune idée de pourquoi cela, je pense qu'il cherche un lecteur). 2) vous pouvez en mettre un seul
:
à la fin d'un nom de variable et une fonctionnalité de remplacement / sous-chaîne ne sera pas déclenchée (même sous les extensions activées). Ce qui, combiné avec les macros pour les commentaires entre crochets, peut rendre les deux cas presque identiques.Voici donc les exemples (dans l'ordre où je les aime le plus):
Avec supports rectangulaires :
Avec accolades :
Avec parenthèses :
Mélange entre les styles PowerShell et C (
<
ne peut pas être utilisé car la redirection est avec un prio plus élevé.*
Ne peut pas être utilisé à cause de la%*
):Pour souligner que c'est un commentaire (je pense que ce n'est pas si court):
la source
rem.||(
ou à larem^ (
place. L'intention est un peu plus claire. Voir ma réponse mise à jour.%rem:%
+%:rem%
form pour le rendre plus évident même si cela perdra son charme.Ou seulement slash pour être plus proche du C-style ...Une autre option consiste à enfermer les lignes indésirables dans un bloc IF qui ne peut jamais être vrai
Bien sûr, rien dans le bloc if ne sera exécuté, mais il sera analysé. Vous ne pouvez donc pas avoir de syntaxe invalide à l'intérieur. De plus, le commentaire ne peut pas contenir
)
sauf s'il est échappé ou entre guillemets. Pour ces raisons, la solution GOTO acceptée est plus fiable. (La solution GOTO peut également être plus rapide)Mise à jour 19/09/2017
Voici une amélioration cosmétique de la solution GOTO de pdub . Je définis une simple variable d'environnement "macro" qui rend la syntaxe des commentaires GOTO un peu meilleure auto-documentée. Bien qu'il soit généralement recommandé que: les étiquettes soient uniques dans un script batch, il est vraiment acceptable d'incorporer plusieurs commentaires comme celui-ci dans le même script batch.
Ou vous pouvez utiliser l'une de ces variantes de la solution de npocmaka . L'utilisation de REM au lieu de BREAK rend l'intention un peu plus claire.
la source
Je veux juste mentionner que la solution GOTO de pdub n'est pas entièrement correcte au cas où: l'étiquette de commentaire apparaît plusieurs fois. Je modifie le code de cette question comme exemple.
La sortie sera
La commande ECHO HERE AT TD_NEXT IN THE FIRST BLOCK est ignorée.
la source
@jeb
Et après avoir utilisé cela, le stderr semble être inaccessible
Non, essayez ceci:
Mais pourquoi ça marche?
désolé, je réponds à la question en français:
(la redirection par 3> est spécial car elle persiste, on va utiliser pour capturer le flux des erreurs 2> est on va le transformer en un flux persistant à l'ade de 3> ceci va nous permettre d'avoir une gestion des erreur pour tout notre environnement de script..par la suite si on veux récupérer le flux 'stderr' il faut faire une autre redirection du handle 2> au handle 1> qui n'est autre que la console ..)
la source
essaye ça:
la source