¿Cómo hago comentarios en el símbolo del sistema de Windows?

Respuestas:

90

REM es la forma estándar:

REM this is a comment

También puede usar la convención de dos puntos que se ve comúnmente en los archivos por lotes:

:: another comment

Un solo dos puntos seguido de una cadena es una etiqueta, pero un doble punto y todo lo que sigue se ignora en silencio. Se podría argumentar que esta forma es más legible que el REMcomando.

Tenga en cuenta que ambos métodos solo funcionan al principio de una línea. Si desea agregar un comentario a un comando, puede usarlos con el carácter de concatenación de comandos ( &), de esta manera:

dir & REM a comment
dir &:: another one
efotinis
fuente
2
Gracias. ¿Esto solo funciona si es lo primero que se encuentra, en lugar de hacer algo como dir :: comment?
Andrew Grimm
1
Primero un enlace útil . Entonces, los comentarios de dos puntos no parecen funcionar dentro de los bloques de código (código entre paréntesis, como en if/ forbucles).
x-yuri
@efotinis, ¿es remrealmente un comando? No sería ::mejor, ya que en sí está siendo ignorada?
Pacerier
@Pacerier, sí REMes un comando real, pero está incrustado en CMD.EXE, por lo que debería ser bastante eficiente. Por otro lado, ::puede ser más rápido, ya que ignora todo al final de la línea (por ejemplo, no comprueba si hay comandos encadenados &).
efotinis
2
Tenga en cuenta que el uso ::puede romper su código en algunos casos, como ser la última línea en un bloque de código.
bryc
16

Prefijas tu comentario con la palabra REM.

REM This is a comment.

Pero si desea que le impriman su comentario, debe repetirlo:

echo This is a comment you'll see.
Bernhard Hofmann
fuente
Aceptando que funciona, pero solo me habría sorprendido un poco más si la respuesta fuera BTW, como en lolcode.com/specs/1.2#comments
Andrew Grimm
5

El REMcomando solo comenta (es decir, Diga algo como comentario) que la línea no se ejecute. Sin embargo, si @echo offno está en el archivo por lotes, esa línea seguirá haciendo eco en la pantalla.

Para evitar que se muestren estas líneas, puede hacer una de tres cosas.

  1. Agregue @echo off al archivo por lotes :
    si desea ocultar todos los comandos, así como las líneas REM, agregue @echo off como la primera línea en el archivo por lotes.
  2. Cambie REM a @REM :
    si desea que se muestren los comandos cuando se ejecuta el archivo por lotes, pero aún así desea ocultar las líneas REM, escriba @REM en lugar de REM.
  3. Use: :( es decir, etiqueta inválida ) en lugar de REM :
    Finalmente, usar :: como el comando de observación en lugar de REM también evita el eco de la línea remarcada.

fuente

Premraj
fuente
2

Creo que la respuesta proporcionada por bernhard es incorrecta.

Al menos hasta la victoria 7,

rem comment

en un archivo por lotes se imprimirá en la salida. Para suprimir la impresión, use

@ rem comment

o

@rem comment

Lo mismo ocurre con otros comandos, que por defecto se repiten en la consola.

pbpb
fuente
El comando REM commentno imprimirá ningún resultado en la pantalla. Para una demostración en vivo, abra un símbolo del sistema y ejecute, echo commentluego ejecute el comando rem comment. Observe que el echocomando imprime el resultado en la pantalla mientras que el remcomando no lo hizo.
Digo reinstalar a Mónica el
Siempre uso @REM commenten mis scripts por lotes para evitar que aparezcan. Hubiera sugerido editar la respuesta de Bernards para incluir el uso de @ antes de REM en scripts por lotes para evitar que aparezca en lugar de publicar una respuesta completamente nueva.
Robin Hood
3
@RobinHood, los archivos por lotes hacen eco de todos los comandos de forma predeterminada (para fines de depuración), por eso es habitual comenzar con ellos @ECHO OFF & SETLOCAL .... De esta manera, no necesita anteponer @todas las líneas y puede cambiar fácilmente ECHO ONcuando algo sale mal y necesita hacer algunas pruebas.
efotinis