Hay varias formas de comentar en un archivo por lotes
1) Usando rem
Esta es la forma oficial. Al parecer, lleva más tiempo ejecutarlo que ::
, aunque aparentemente deja de analizarse antes de que se procesen los cuidados. El porcentaje de expansión ocurre antes de rem y ::
se identifica, por lo que el uso incorrecto de porcentaje, es decir %~
, causará errores si hay porcentajes presentes. Seguro de usar en cualquier lugar en bloques de código.
2) El uso de etiquetas :
, ::
o :;
etc.
Para :: comment
, ': comentario' es un nombre de etiqueta no válido porque comienza con un carácter no válido. Sin embargo, está bien usar dos puntos en el medio de una etiqueta. Si un espacio comienza al comienzo de la etiqueta, se elimina se : label
convierte en :label
. Si aparece un espacio o dos puntos en el medio de la etiqueta, el resto del nombre no se interpreta, lo que significa que si hay dos etiquetas :f:oo
y :f rr
, ambas se interpretarán como :f
y solo se saltará a la etiqueta definida más tarde en el archivo. El resto de la etiqueta es efectivamente un comentario. Hay varias alternativas a ::
, enumeradas aquí . Nunca puedes goto
o call
una ::foo
etiqueta. goto :foo
y goto ::foo
no funcionará
Funcionan bien fuera de los bloques de código pero después de una etiqueta en un bloque de código, inválido o no, tiene que haber una línea de comando válida. :: comment
es de hecho otro comando válido. Lo interpreta como un comando y no una etiqueta; El comando tiene prioridad. Cuál es el comando para cd al ::
volumen, que funcionará si ha ejecutado subst :: C:\
, de lo contrario obtendrá un error de no encontrar el volumen. Es por eso :;
que podría decirse que es mejor porque no se puede interpretar de esta manera y, por lo tanto, se interpreta como una etiqueta, que sirve como el comando válido. Esto no es recursivo, es decir, la siguiente etiqueta no necesita un comando después. Por eso vienen en parejas.
Debe proporcionar un comando válido después de la etiqueta, por ejemplo echo something
. Una etiqueta en un bloque de código tiene que venir con al menos un comando válido, por lo que las líneas vienen en pares de dos. Obtendrá un )
error inesperado si hay un espacio o un paréntesis de cierre en la siguiente línea. Si hay un espacio entre las dos ::
líneas, obtendrá un error de sintaxis no válido.
También puede usar el operador de intercalación en el ::
comentario de la siguiente manera:
@echo off
echo hello
(
:;(^
this^
is^
a^
comment^
)
:;
)
:;^
this^
is^
a^
comment
:;
)
Pero necesita el seguimiento :;
por la razón indicada anteriormente.
@echo off
(
echo hello
:;
:; comment
:; comment
:;
)
echo hello
Está bien siempre que haya un número par. Esta es sin duda la mejor manera de comentar, con 4 líneas y :;
. Con :;
usted no obtiene ningún error que deba suprimirse con 2> nul
o subst :: C:\
. Puede usar subst :: C:\
para que el error de volumen no encontrado desaparezca, pero eso significa que también tendrá que poner C: en el código para evitar que su directorio de trabajo se convierta ::\
.
Para comentar al final de una línea puede hacer
command &::
o command & rem comment
, pero todavía tiene que haber un número par, así:
@echo off
(
echo hello & :;yes
echo hello & :;yes
:;
)
echo hello
El primero echo hello & :;yes
tiene un comando válido en la siguiente línea pero el segundo & :;yes
no, por lo que necesita uno, es decir, el :;
.
3) Usar una variable de entorno no válida
%= comment =%
. En un archivo por lotes, las variables de entorno que no están definidas se eliminan del script. Esto hace posible usarlos al final de una línea sin usar &
. Es personalizado usar una variable de entorno no válida, es decir, una que contenga un signo igual. No se requieren los iguales adicionales, pero lo hace parecer simétrico. Además, los nombres de variables que comienzan con "=" están reservados para variables dinámicas no documentadas. Esas variables dinámicas nunca terminan con "=", por lo que al usar un "=" al principio y al final del comentario, no hay posibilidad de un choque de nombres. El comentario no puede contener %
o :
.
@echo off
echo This is an example of an %= Inline Comment =% in the middle of a line.
4) Como un comando, redirigiendo stderr a nul
@echo off
(
echo hello
;this is a comment 2> nul
;this is another comment 2> nul
)
5) Al final de un archivo, todo después de un paréntesis no cerrado es un comentario
@echo off
(
echo hello
)
(this is a comment
this is a comment
this is a comment