Como faço para fazer comentários em um prompt de comando do Windows?

67

Qual é o equivalente #para cmdsessões de console do Windows , para criar um comentário?

O sistema operacional é o Windows XP.

Andrew Grimm
fonte
11
Note que cmd.exeno Windows é não DOS - é uma aplicação completa do Windows, que só tem uma sintaxe semelhante ao decommand.com
grawity
Possível duplicata de Que estilo de comentário devo usar em arquivos em lotes?
Michael Freidgeim

Respostas:

90

REM é a maneira padrão:

REM this is a comment

Você também pode usar a convenção de dois pontos, comumente vista em arquivos em lote:

:: another comment

Um único ponto e vírgula seguido por uma string é um rótulo, mas dois pontos e qualquer coisa depois disso são ignorados silenciosamente. Alguém poderia argumentar que esse formulário é mais legível que o REMcomando.

Observe que esses dois métodos funcionam apenas no início de uma linha. Se você deseja anexar um comentário a um comando, pode usá-los com o caractere de concatenação de comando ( &), assim:

dir & REM a comment
dir &:: another one
efotinis
fonte
2
Obrigado. Isso só funciona se for a primeira coisa encontrada, em vez de fazer algo assim dir :: comment?
Andrew Grimm
11
Primeiro um link útil . Então, comentários em dois pontos parecem não funcionar dentro de blocos de código (código entre parênteses, como em if/ forloops).
x-yuri
@efotinis, é remrealmente um comando? Não ::seria melhor porque ele próprio está sendo ignorado?
Pacerier
@Pacerier, yes REMé um comando real, mas está incorporado no CMD.EXE, portanto deve ser bastante eficiente. Por outro lado, ::pode ser mais rápido, pois ignora tudo no final da linha (por exemplo, não verifica comandos encadeados usando &).
Efotinis
2
Lembre-se de que o uso ::pode quebrar seu código em alguns casos, como a última linha de um bloco de código.
bryc
16

Você prefixa seu comentário com a palavra REM.

REM This is a comment.

Mas se você deseja que o seu comentário seja impresso novamente, você deve repetir:

echo This is a comment you'll see.
Bernhard Hofmann
fonte
Aceitando como trabalho, mas eu só teria sido um pouco mais surpreso se a resposta foi BTW, como em lolcode.com/specs/1.2#comments
Andrew Grimm
5

O REMcomando apenas observa (por exemplo, diga algo como um comentário) que a linha seja executada. No entanto, se @echo offnão estiver no arquivo em lotes, essa linha ainda ecoará na tela.

Para impedir que essas linhas sejam mostradas, você pode executar uma das três coisas.

  1. Adicionar @echo off ao arquivo em lotes :
    se você deseja ocultar todos os comandos e as linhas REM, adicione @echo off como a primeira linha no arquivo em lotes.
  2. Altere o REM para @REM :
    se você deseja exibir os comandos quando o arquivo em lotes é executado, mas ainda deseja ocultar as linhas REM, digite @REM em vez de REM.
  3. Use: :( ie etiqueta inválida ) em vez de REM :
    Finalmente, o uso de :: como comando de observação em vez de REM também impede o eco da linha comentada.

fonte

Premraj
fonte
2

Acredito que a resposta fornecida por Bernhard esteja incorreta.

Pelo menos através da vitória 7,

rem comment

em um arquivo em lotes será impresso na saída. Para suprimir a impressão, use

@ rem comment

ou

@rem comment

O mesmo vale para outros comandos, que por padrão são ecoados no console.

pbpb
fonte
O comando REM commentnão imprimirá nenhuma saída na tela. Para uma demonstração ao vivo, abra um prompt de comando e echo commentexecute o comando rem comment. Observe que o echocomando imprime a saída na tela enquanto o remcomando não.
Eu digo Restabelecer Monica
Eu sempre uso @REM commentnos meus scripts de lote para evitar que eles apareçam. Eu sugeriria editar a resposta de Bernards para incluir o uso de @ before REM em scripts em lote para evitar que ela apareça em vez de postar uma resposta totalmente nova.
Robin Hood
3
@RobinHood, arquivos em lote repetem todos os comandos por padrão (para fins de depuração), é por isso que é habitual iniciá-los @ECHO OFF & SETLOCAL .... Dessa forma, você não precisa anexar @todas as linhas e pode alternar facilmente para ECHO ONquando algo der errado e precisar fazer alguns testes.
Efotinis