Existem várias maneiras de comentar em um arquivo em lotes
1) Usando rem
Esta é a maneira oficial. Aparentemente, leva mais tempo para ser executado do que ::
, embora aparentemente pare de analisar mais cedo, antes que os sinais de intercalação sejam processados. A expansão percentual ocorre antes do rem e ::
é identificada; portanto, o percentual incorreto de uso, ou seja %~
, causará erros se houver porcentagens. Seguro para usar em qualquer lugar nos blocos de código.
2) O uso de etiquetas :
, ::
ou :;
etc.
Para :: comment
, ': comment' é um nome de rótulo inválido porque começa com um caractere inválido. Não há problema em usar dois pontos no meio de um rótulo. Se um espaço começa no início da etiqueta, ele é removido : label
torna-se :label
. Se um espaço ou dois pontos aparecer no meio do rótulo, o restante do nome não será interpretado, o que significa que, se houver dois rótulos :f:oo
e :f rr
, ambos serão interpretados como :f
e somente o rótulo definido posteriormente no arquivo será saltado. O restante do rótulo é efetivamente um comentário. Existem várias alternativas para ::
, listadas aqui . Você nunca pode goto
ou call
um ::foo
rótulo. goto :foo
e goto ::foo
não vai funcionar.
Eles funcionam bem fora dos blocos de código, mas após um rótulo em um bloco de código, inválido ou não, deve haver uma linha de comando válida. :: comment
é de fato outro comando válido. Ele interpreta isso como um comando e não como um rótulo; o comando tem precedência. Qual é o comando para cd no ::
volume, que funcionará se você tiver executado subst :: C:\
, caso contrário, você receberá um erro de volume não encontrado. É por isso que :;
é discutivelmente melhor porque não pode ser interpretado dessa maneira e, portanto, é interpretado como um rótulo, que serve como um comando válido. Isso não é recursivo, ou seja, o próximo rótulo não precisa de um comando depois dele. É por isso que eles vêm em dois.
Você precisa fornecer um comando válido após o rótulo, por exemplo echo something
. Um rótulo em um bloco de código precisa vir com pelo menos um comando válido, portanto as linhas vêm em pares de dois. Você receberá um )
erro inesperado se houver um espaço ou um parêntese de fechamento na próxima linha. Se houver um espaço entre as duas ::
linhas, você receberá um erro de sintaxe inválido.
Você também pode usar o operador de sinal de intercalação no ::
comentário da seguinte forma:
@echo off
echo hello
(
:;(^
this^
is^
a^
comment^
)
:;
)
:;^
this^
is^
a^
comment
:;
)
Mas você precisa do final :;
pelo motivo indicado acima.
@echo off
(
echo hello
:;
:; comment
:; comment
:;
)
echo hello
Tudo bem, desde que haja um número par. Esta é sem dúvida a melhor maneira de comentar - com 4 linhas e :;
. Com :;
você, não há erros que precisam ser suprimidos usando 2> nul
ou subst :: C:\
. Você pode usar subst :: C:\
para fazer com que o erro de volume não encontrado desapareça, mas isso significa que você também precisará colocar C: no código para impedir que seu diretório de trabalho se torne ::\
.
Para comentar no final de uma linha, você pode fazer
command &::
ou command & rem comment
, mas ainda deve haver um número par, assim:
@echo off
(
echo hello & :;yes
echo hello & :;yes
:;
)
echo hello
O primeiro echo hello & :;yes
tem um comando válido na próxima linha, mas o segundo & :;yes
não, então ele precisa de um, ou seja, o :;
.
3) Usando uma variável de ambiente inválida
%= comment =%
. Em um arquivo em lotes, as variáveis de ambiente que não são definidas são removidas do script. Isso torna possível usá-los no final de uma linha sem usar &
. É personalizado usar uma variável de ambiente inválida, ou seja, uma que contenha um sinal de igual. O igual extra não é necessário, mas faz com que pareça simétrico. Além disso, nomes de variáveis iniciados com "=" são reservados para variáveis dinâmicas não documentadas. Essas variáveis dinâmicas nunca terminam com "=", portanto, usando um "=" no início e no final do comentário, não há possibilidade de conflito de nome. O comentário não pode conter %
ou :
.
@echo off
echo This is an example of an %= Inline Comment =% in the middle of a line.
4) Como um comando, redirecionando stderr para nul
@echo off
(
echo hello
;this is a comment 2> nul
;this is another comment 2> nul
)
5) No final de um arquivo, tudo depois de um parêntese não fechado é um comentário
@echo off
(
echo hello
)
(this is a comment
this is a comment
this is a comment