Как сделать комментарии в командной строке Windows?

67

Что эквивалентно #для cmdконсольных сессий Windows , чтобы создать комментарий?

Операционная система - Windows XP.

Эндрю Гримм
источник
1
Обратите внимание, что cmd.exeв Windows это не DOS - это полноценное приложение для Windows, синтаксис которого схож с синтаксисомcommand.com
grawity 12.12.09

Ответы:

90

REM это стандартный способ:

REM this is a comment

Вы также можете использовать соглашение о двойных двоеточиях, обычно встречающееся в пакетных файлах:

:: another comment

Одиночное двоеточие, за которым следует строка, является меткой, но двойное двоеточие и все, что после него, игнорируется. Можно утверждать, что эта форма более разборчива, чем REMкоманда.

Обратите внимание, что оба эти метода работают только в начале строки. Если вы хотите добавить комментарий к команде, вы можете использовать их с символом конкатенации команды ( &), например так:

dir & REM a comment
dir &:: another one
efotinis
источник
2
Благодарю. Работает ли это только в том случае, если это первое, с чем столкнулись, в отличие от чего-то подобного dir :: comment?
Эндрю Гримм
1
Сначала полезная ссылка . Тогда комментарии с двойным двоеточием, похоже, не работают внутри блоков кода (код между круглыми скобками, как в if/ forциклы).
x-yuri
@efotinis, на remсамом деле команда? Не было ::бы лучше , потому что сама игнорируется?
Pacerier
@Pacerier, yes REM- это действительная команда, но она встроена в CMD.EXE, поэтому она должна быть довольно эффективной. С другой стороны, ::может быть быстрее, так как он игнорирует все до конца строки (например, он не проверяет использование цепочек команд &).
efotinis
2
Имейте в виду, что использование ::может в некоторых случаях нарушать ваш код, например, быть последней строкой в ​​блоке кода.
Брай
16

Вы добавляете комментарий к слову REM.

REM This is a comment.

Но если вы хотите, чтобы ваш комментарий был напечатан вам, вы должны повторить это:

echo This is a comment you'll see.
Бернхард Хофманн
источник
Принятие как работающее, но я был бы только немного более удивлен, если бы ответ был BTW, как в lolcode.com/specs/1.2#comments
Эндрю Гримм
5

Команда REMтолько отмечает (т.е. что-то говорит как комментарий) строку от исполнения. Однако, если @echo offего нет в командном файле, эта строка все равно будет отображаться на экране.

Чтобы эти строки не отображались, вы можете сделать одну из трех вещей.

  1. Добавьте @echo off в пакетный файл :
    если вы хотите скрыть все команды, а также строки REM, добавьте @echo off в качестве первой строки в пакетном файле.
  2. Измените REM на @REM :
    если вы хотите, чтобы команды отображались при запуске пакетного файла, но все же хотите скрыть строки REM, введите @REM вместо REM.
  3. Используйте: :( то есть недопустимый ярлык ) вместо REM :
    Наконец, использование :: как команды примечания вместо REM также предотвращает эхо отмеченной строки.

источник

Premraj
источник
2

Я считаю, что ответ Бернхарда неверен.

По крайней мере, через победу 7,

rem comment

в пакетном файле будет печататься в выводе. Для подавления печати используйте

@ rem comment

или же

@rem comment

То же самое относится и к другим командам, которые по умолчанию выводятся на консоль.

pbpb
источник
Команда REM commentне будет выводить какие-либо выходные данные на экран. Для демонстрации в режиме реального времени откройте командную строку и запустите, а echo commentзатем выполните команду rem comment. Обратите внимание, что echoкоманда выводит вывод на экран, а remкоманда - нет.
Я говорю Восстановить Монику
Я всегда использую @REM commentв своих пакетных скриптах, чтобы они не появлялись. Я бы предложил отредактировать ответ Бернарда, чтобы включить использование @ before REM в пакетных сценариях, чтобы избежать его появления, а не публиковать новый ответ.
Робин Гуд
3
@RobinHood, пакетные файлы отражают все команды по умолчанию (для целей отладки), поэтому их обычно начинают @ECHO OFF & SETLOCAL .... Таким образом, вам не нужно готовиться @ко всем строкам, и вы можете легко переключаться, ECHO ONкогда что-то идет не так, и вам нужно провести некоторое тестирование.
efotinis