Как закомментировать строку в bat-файле

Обновлено: 21.11.2024

В качестве напоминания себе, чтобы мне не приходилось гуглить каждый раз, когда мне нужно работать на Windows Server (другими словами, очень редко), есть три способа добавления комментариев в пакетные файлы ( .bat) в Windows.

Первый, наиболее распространенный способ (соответствующий стандартам, документированный отчет) — это использование оператора REM. Любая строка в пакетном файле, начинающаяся с REM (что означает REMark), полностью игнорируется пакетным интерпретатором.

В этот момент может быть полезно напомнить себе, что по умолчанию пакетный интерпретатор распечатывает каждую команду перед ее обработкой. Поскольку команды REM ничего не делают, их можно безопасно распечатать без каких-либо побочных эффектов. Однако, если вы хотите избежать вывода команды, включая инструкцию REM, добавьте к ней префикс @ или, чтобы применить этот параметр во всей программе, запустите @echo off. (Эхо отключено, чтобы не печатать дальнейшие команды; @ означает, что эта команда не печатается до того, как настройки эха вступят в силу.)

Второй способ закомментировать строку в пакетном файле – использовать хитрый прием, который, по сути, позволяет вам преобразовать строку комментария в метку, добавив перед ней двойное двоеточие (::). Первое двоеточие сообщает пакетному интерпретатору, что следующий текст является меткой, а второе двоеточие аннулирует статус метки, но затем заставляет интерпретатор все равно рассматривать строку как метку. Преимущество этого трюка в том, что он не замедляет работу интерпретатора, потому что ему не нужно останавливаться для интерпретации оператора команды, как это необходимо для оператора REM, — он просто переходит к следующей строке файла, не перечитывая его целиком. файл еще раз!

Однако этот прием не позволяет вам начинать комментарий со средней строки, поскольку метки всегда начинаются с первого непробельного символа в командной строке. Кроме того, блоки кода являются подводным камнем для этого трюка, поскольку команды, сгруппированные в круглых скобках, интерпретируются пакетным интерпретатором как одна командная строка, что затем, очевидно, делает недействительным наш «фальшивый» ярлык, как только что упомянутый выше — ваш комментарий, скорее всего, не будет сидеть. в начале объединенной командной строки!

Наконец, вы можете написать несколько строк комментариев (или блоков комментариев), воспользовавшись возможностью перепрыгивать строки комментариев с помощью оператора GOTO. На практике:

Обратите внимание, что, вероятно, полезно помочь другим понять, что происходит, используя описательное имя метки GOTO.

И вот, три разных способа добавления строк комментариев в пакетный файл .bat.

Технический совет. Сохраняйте среду рабочего стола Windows на любом устройстве (ПК/Mac/Linux/Android/iOS) с помощью удаленного доступа к своему citrix xendesktop из CloudDesktopOnline по невероятной цене citrix xendesktop. Чтобы расширить возможности настольных компьютеров в облаке, попробуйте хостинг с выделенным графическим процессором от Apps4Rent, чтобы удовлетворить ваши требования к графике.

Всегда рекомендуется добавлять комментарии или документацию к создаваемым скриптам. Это необходимо для обслуживания сценариев, чтобы понять, что на самом деле делает сценарий.

Например, рассмотрим следующий фрагмент кода без комментариев. Если обычный человек, не разработавший следующий скрипт, попытается его понять, ему потребуется много времени, чтобы понять, что на самом деле делает этот скрипт.

Комментарии с использованием оператора Rem

Существует два способа создания комментариев в пакетном сценарии; один через команду Rem. Любой текст, который следует за оператором Rem, будет рассматриваться как комментарий и не будет выполняться. Ниже приведен общий синтаксис этого оператора.

Синтаксис

где «Примечания» — это комментарии, которые необходимо добавить.

В следующем примере показан простой способ использования команды Rem.

Пример

Вывод

Приведенная выше команда выводит следующий результат. Вы заметите, что строка с оператором Rem не будет выполнена.

Комментарии с использованием оператора ::

Еще один способ создания комментариев в пакетном скрипте — с помощью команды ::. Любой текст, следующий за оператором ::, будет рассматриваться как комментарий и не будет выполняться. Ниже приведен общий синтаксис этого оператора.

Синтаксис

где «Примечания» — комментарий, который необходимо добавить.

В следующем примере показано использование команды "::".

Пример

Вывод

Приведенная выше команда выводит следующий результат. Вы заметите, что строка с оператором :: не будет выполнена.

Примечание. Если у вас слишком много строк Rem, это может замедлить код, потому что в конце концов каждую строку кода в пакетном файле все равно нужно выполнить.

Давайте посмотрим на пример большого скрипта, который мы видели в начале этой темы, и посмотрим, как он будет выглядеть, когда к нему будет добавлена ​​документация.

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

У меня есть пакетный файл, который запускает несколько скриптов Python, выполняющих модификации таблиц.

Я хочу, чтобы пользователи закомментировали 1-2 скрипта Python, которые они не хотят запускать, а не удаляли их из пакетного файла (чтобы следующий пользователь знал, что эти скрипты существуют как опции!)

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

Есть ли более подходящий синтаксис для добавления комментария?

12 ответов 12

  • :: не работает встроенно; добавить & символ:
    ваши команды здесь & :: commenttttttttttt
  • Внутри вложенных частей (циклы IF/ELSE, FOR и т. д.) после :: должна следовать обычная строка, иначе выдается ошибка (используйте там REM).
  • :: также может произойти сбой в setlocal ENABLEDELAYEDEXPANSION

Двойное двоеточие :: Самый чистый комментарий .bat. И его можно использовать в начале или середине строки!

Для комментария в той же строке, что и в примере, необходимо добавить & между кодом и комментарием :: . Чтобы проиллюстрировать это, откройте приглашение cmd и запустите dir::blah, в котором не отображается содержимое . и сравните с dir & ::blah , что делает

Примеры того, как использование меток :: в качестве комментариев может привести к труднопредсказуемым ошибкам. Называть это чистым немного неправильно @ATSiem

Команда rem действительно предназначена для комментариев. По своей сути он никого не обновляет после запуска скрипта. Однако некоторые авторы сценариев могут использовать его таким образом вместо echo , потому что по умолчанию пакетный интерпретатор выводит каждую команду перед ее обработкой. Поскольку команды rem ничего не делают, их можно безопасно распечатать без побочных эффектов. Чтобы не печатать команду, добавьте к ней префикс @ или, чтобы применить этот параметр во всей программе, запустите @echo off . (Эхо отключено, чтобы избежать вывода дальнейших команд; @ означает, что эта команда не печатается до того, как настройки эха вступят в силу.)

Итак, в пакетном файле вы можете использовать это:

Вы также можете использовать два двоеточия "::". Это один из двух способов добавления примечаний в пакетный файл без отображения или выполнения этой строки при запуске пакетного файла. В отличие от REM, эта строка не будет отображаться независимо от того, отключено ли ECHO в командном файле.

@Brent81 Мне кажется, это правильный ответ. При использовании подсветки синтаксиса команда REM фактически не выделяет текст как «закомментированный».

Интересно. Я думал, что REM был «комментарием на всю строку», а двойное двоеточие — «встроенным комментарием», например, REM Вся строка — это комментарий @echo off :: Этот комментарий является встроенным

Нет, старые простые пакетные файлы используют REM в качестве комментария. ECHO — это команда, которая печатает что-то на экране.

Чтобы «закомментировать» разделы файла, вы можете использовать GOTO . Пример всех этих команд/методов:

Что я могу сказать? пакетные файлы — это пережиток давно минувших времен, они неуклюжи и уродливы.

EDIT: немного изменил пример, чтобы он содержал элементы, которые вы, очевидно, ищете.

В те дни, когда компьютеры не были очень быстрыми, предпочтительнее использовать :: вместо REM. Строка REM считывается, а затем игнорируется. :: строка полностью игнорируется. Это может ускорить ваш код в «старые времена». Более того, после REM вам нужен пробел, после :: нет.

И, как сказано в первом комментарии: вы можете добавить информацию в любую строку, в которой сочтете нужным

Что касается пропуска частей. Помещение REM перед каждой строкой может занять довольно много времени. Как уже упоминалось, использование GOTO для пропуска частей — это простой способ пропустить большие фрагменты кода. Обязательно установите :LABEL в том месте, где вы хотите, чтобы код продолжался.

Как можно игнорировать строку с двойным двоеточием, не читая ее? Разве интерпретатор не должен сначала прочитать строку, прежде чем распознать ее как строку с двойным двоеточием?

@RobKennedy, когда я читаю ответ, он ничего не читает после . где читается все после REM.

Если интерпретатор команд перестанет читать, @James, то он больше никогда не выполнит файл. Очевидно, необходимо продолжить чтение, чтобы узнать, где заканчивается комментарий и где начинается следующая строка файла. Это должно быть сделано в равной степени с :: и rem.

@RobKennedy он читает, но не анализирует (или не обрабатывает) то, что читает, он просто пропускает до следующего \n, а затем снова начинает анализировать [необходима цитата]

Многострочные комментарии

Если вы хотите закомментировать большое количество строк, будет лучше, если вы сможете делать многострочные комментарии, а не комментировать каждую строку.

В пакетном языке нет блоков комментариев, хотя есть способы добиться этого эффекта.

Вы можете использовать GOTO Label и :Label для создания комментариев к блоку.

Или, если блок комментариев появляется в конце пакетного файла, вы можете написать EXIT в конце кода. а затем любое количество комментариев для вашего понимания.

Размещение комментариев в одной строке с командами: use & :: comment

Пояснение:

& разделяет две команды, поэтому в данном случае цвет C — первая команда, а :: set red font color — вторая.

Важно:

Это утверждение с комментарием выглядит интуитивно правильно:

но это недопустимое использование комментария. Это работает только потому, что goto игнорирует все аргументы после первого. Доказательство простое, этот goto тоже не подведёт:

Но аналогичная попытка

не удается выполнить команду из-за 4 аргументов, неизвестных команде color: :: , gray , on , blue .

Это будет работать только как:

Поэтому амперсанд неизбежен.

Вы можете что-то закомментировать, используя :: или REM :

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

  • Использование :: во вложенной логике (циклы IF-ELSE, FOR и т. д.) вызовет ошибку. В таких случаях используйте вместо этого REM.

Это основано на ответе Т. Тодуа. Мне показалось, что их ответ был хорошим, но упустил некоторые важные детали, но они отменили мою правку, поэтому я превращаю свою версию в отдельный ответ.

Вы можете добавить комментарии в конец пакетного файла с помощью следующего синтаксиса:

Просто убедитесь, что вы никогда не используете закрывающие скобки.

Это старая тема, и я хотел бы добавить сюда свое понимание, чтобы расширить знания об этой интересной теме.

Ключевое различие между REM и :: заключается в следующем:

REM — это сама команда, а :: — НЕ.

Мы можем рассматривать :: как токен, который, как только синтаксический анализатор CMD обнаружит первый непустой пробел в строке, это токен ::, он просто пропустит всю строку и прочитает следующую строку. Вот почему за REM должен следовать хотя бы пробел, чтобы он мог функционировать как комментарий к строке, в то время как :: не требует пробела после него.

То, что REM является командой, лучше всего видно из следующего синтаксиса FOR

Основной синтаксис FOR выглядит следующим образом

здесь может быть любая допустимая команда. Поэтому мы можем написать следующую допустимую командную строку, поскольку rem — это команда

Независимо от используемого языка программирования или сценариев всегда полезно вставлять в сценарии комментарии, объясняющие, что пытается выполнить следующая строка или блок кода, как и/или почему.

Комментарии в пакетных файлах обычно размещаются в строках, начинающихся с REM (REMarks).

Недостаток этого метода состоит в том, что пакетный файл может "случайно" действительно использовать метку для перехода.

Этот же трюк работает и в CMD.EXE (командный процессор в Windows NT 4 и более поздних версиях) (хотя не уверен насчет OS/2).

<р>. но с некоторыми ограничениями!

REM — это настоящая команда, которую можно использовать в любом месте командной строки.
Хотя я сомневаюсь, что есть большая польза от такой команды, как:

оно действительно и не будет генерировать сообщение об ошибке в любой версии DOS или Windows.

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

все разрешены.
Однако

приведет к сообщению о синтаксической ошибке.

Настоящей ловушкой являются блоки кода, несколько команд, сгруппированных в круглых скобках и интерпретируемых CMD.EXE как одна командная строка!

приведет к сообщению об ошибке следующего содержания:

) было неожиданным в это время.

приведет к другому сообщению об ошибке:

Сделайте что-нибудь
Системе не удается найти указанный диск.

То же самое относится и к циклам FOR.
Попробуйте и убедитесь сами:

также приведет к сообщениям об ошибках.

Ошибки вызваны использованием меток в блоках кода.

Что может стать сюрпризом, так это то, что следующий код действительно работает безупречно:

Оказывается, что одна :: строка комментария, сразу за которой следует непустая командная строка, будет< /em> работают даже внутри блоков кода!

Замените двойные двоеточия операторами REM, и все эти образцы будут работать без сбоев.
Еще лучше вообще не использовать комментарии внутри блоков кода, а вместо этого размещать их непосредственно перед блоками кода:

Тайна:

В приведенном выше коде используются 3 блока кода, каждый из которых содержит команду REM, за которой следует команда ECHO.
За 3 кодовыми блоками следует четвертая "автономная" команда ECHO.
Предполагается, что 3 блока кода будут вести себя более или менее одинаково, по крайней мере, в более старых версиях, таких как Windows NT 4 и 2000.

Ну, в Windows 7 нет!

comment1 — единственный комментарий, изд. ECHO.
Блок кода для комментария2 отображает только пустую строку.
Блок кода для comment3 никогда не достигается.

Кажется, блок кода для comment2 прерывает пакетный файл без предупреждения.
Удалите этот блок кода, и все остальное будет выполнено, как и ожидалось.

Итак, вы можете объяснить такое поведение.

Ответ можно найти в конце этой страницы.

Дополнительная информация по теме:

(Спасибо за Ли Уилбура и Майкла Клемента)

Возможная ловушка, на которую указал Джуст Коп, заключается в том, что REM закомментирует строку, использующую перенаправление, например:

В CMD.EXE (Windows NT 4 и более поздних версиях) эта строка полностью игнорируется (как, вероятно, и предполагалось), но COMMAND.COM (MS-DOS, Windows 9x) интерпретирует эту строку как «перенаправить вывод REM в файл журнала». .log", тем самым очищая файл logfile.log или создавая файл logfile.log размером 0 байт.

Примечание: Я хотел бы упомянуть одну ситуацию, когда я всегда предпочитаю REM двойным двоеточиям: пакетные файлы для автоматической установки.
Почему?
Я всегда отключаю параметр @ECHO OFF, поскольку автоматическая установка обычно выполняется в фоновом режиме.
Однако при тестировании я буду запускать пакетные файлы в интерактивном режиме, а затем будут отображаться комментарии REM ed (помните, что нет @ECHO OFF ), потому что они являются командами, а не ярлыки.

Подведение итогов:

  • REM – это документированная инструкция, соответствующая стандартам, для вставки комментариев в пакетные файлы.
  • Двойное двоеточие — это недокументированный и несовместимый способ вставки комментариев; нет гарантии, что они будут работать в будущих версиях Windows
  • теоретически использование двойных двоеточий может ускорить выполнение пакетных файлов при запуске с медленного диска (например, гибкого диска), но я сомневаюсь, что на современных компьютерах можно обнаружить разницу
  • для больших блоков комментариев команда GOTO непосредственно перед комментариями и переход к метке сразу после комментариев – это более безопасный и соответствующий стандартам способ ускорить пакетное выполнение с медленных дисков.
  • поскольку двойные двоеточия на самом деле являются метками, их следует ставить в начале командной строки; хотя ведущие пробелы разрешены, больше ничего
  • использование двойных двоеточий внутри блоков кода нарушает предыдущее «правило» и обычно приводит к ошибкам (за исключением некоторых особых случаев)
  • старайтесь избегать комментариев внутри блоков кода или используйте REM, если необходимо (но помните о подводных камнях, если вы используете REM )
  • при работе с COMMAND.COM будьте осторожны при использовании REM или двойных двоеточий для временного «отключения» командной строки, особенно если она содержит конвейер, перенаправление или переменные
  • несмотря ни на что, нет ничего плохого в использовании двойных двоеточий для комментариев, если вы понимаете ограничения
  • тестировать, тестировать, тестировать и тестировать ваши пакетные файлы, включая строки комментариев, на всех версиях Windows, для которых они будут использоваться

Канал REM для блокировки стандартного ввода

Действительно полезным приемом является использование REM в сочетании с конвейером, например:

Сама по себе команда CHOICE истечет через 5 секунд (/T), за исключением случаев, когда кто-то нажимает клавишу, не указанную в /C, и в этом случае обратный отсчет будет прерван.
Используя REM и направляя его (всегда пустой) стандартный вывод на стандартный ввод CHOICE, этот стандартный ввод больше не будет получать нажатия клавиш с консоли (клавиатуры). Таким образом, нажатие кнопки не ускоряет ВЫБОР и не останавливает его.
(Я позаимствовал эту технику у "Outsider", одного из "завсегдатаев" группы новостей alt.msdos.batch, и добавил параметр /C, чтобы сделать ее независимой от языка)

ТИП NUL | ВЫБОР /C:AB /T:A,5 > NUL

Блоки комментариев

Некоторые языки позволяют комментировать целые блоки кода с помощью тегов /* и */.
Rexx, например, будет рассматривать весь текст, отмеченный красным, как комментарий:

В пакетном языке нет блоков комментариев, хотя есть способы добиться этого эффекта:

Или, если блок комментариев появляется в конце пакетного файла:

Лео Гутьеррес Рамирес придумал еще более короткий способ создания блока комментариев в конце пакетного файла:

Загадка разгадана

Недавно Васко Рато показал мне решение загадочно исчезнувшего кода.

Если вы почитаете трюк Лео Гутьерреса Рамиреса с отсутствующей закрывающей скобкой, вы увидите, что именно это и происходит.
Следующая строка кода:

эквивалентно

поскольку все, что следует за оператором REM, включая закрывающую скобку, является комментарием, т. е. не интерпретируется!

Поскольку в «загадочном кодовом блоке» после этого комментария не было других круглых скобок, все, начиная с открывающей круглой скобки перед оператором REM и заканчивая концом кода, представляет собой «Лео Гутьеррес Рамирес». стиль" блока комментариев.

Пакетный файл можно прокомментировать с помощью двух двоеточий :: или команды REM. Основное отличие состоит в том, что строки, закомментированные с помощью команды REM, будут отображаться во время выполнения командного файла (этого можно избежать, установив @echo off ), а строки, закомментированные с помощью :: , не будут напечатаны. 19 ноября 2020 г.

Что такое %% в BAT-файле?

Используйте двойные знаки процента ( %% ) для выполнения команды for в пакетном файле. Переменные чувствительны к регистру и должны быть представлены в алфавитном порядке, например %a, %b или %c. ( ) Необходимый. Указывает один или несколько файлов, каталогов, текстовых строк или диапазон значений, для которых выполняется команда.

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

  1. Выберите блок строк.
  2. нажмите Ctrl + Q.

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

Комментарий создается с помощью команды REM, сокращенно от «Remark». Это упрощает отслеживание нескольких наборов значений при исследовании, тестировании концепции и т. д. Этот подход работает, потому что «&» вводит новую команду в той же строке. Это «РЕМ».

Что означает %% я?

%%i — это просто переменная цикла. Это объясняется в документации по команде for, которую можно получить, набрав for /? в командной строке.

Безопасны ли файлы BAT?

Файлы BAT чаще всего используются для запуска программ и утилит обслуживания в Windows. Опасность: BAT-файл содержит ряд строковых команд, которые будут выполняться при его открытии, что делает его хорошим вариантом для злоумышленников-программистов.

Как вставлять комментарии в приглашение командной строки в Linux?

Как прокомментировать несколько строк в Python?

Как комментировать код в bash?

Как вы пишете заметки в CMD?

  1. Введите CMD в меню "Пуск" Windows и нажмите Enter, чтобы открыть CMD.exe.
  2. Измените каталог с папки вашего текущего имени пользователя на базовый каталог, введя «cd\» и нажав Enter. …
  3. Введите следующую строку и нажмите Enter: start «c:\windows\system32» notepad.exe.

Как прокомментировать сценарий Linux?

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

Комментарии с использованием оператора ::

Еще один способ создания комментариев в пакетном скрипте — с помощью команды ::. Любой текст, следующий за оператором ::, будет рассматриваться как комментарий и не будет выполняться. Ниже приведен общий синтаксис этого оператора.

Что означает 🙂 в текстовых сообщениях?

🙂 означает «Счастливый». Я знаю все о значках.

Что такое IG?

Наверное,
IG означает платформу социальных сетей Instagram. Это также иногда сокращение от я думаю.

Что это значит <>?

Да, это означает «не равно», меньше или больше. например, если x <> y, тогда. можно прочитать как. если x меньше y или x больше y, то.

Что могут делать bat-файлы?

BAT-файл — это пакетный файл DOS, используемый для выполнения команд с помощью командной строки Windows (cmd.exe). Он содержит ряд строковых команд в виде обычного текста, которые выполняются для выполнения различных задач, таких как запуск программ или запуск утилит обслуживания в Windows.

Что делает активация летучей мыши?

Вы можете передать этот полный путь к файлу activ. bat, и он запустится для вас и автоматически запустится с активированной рабочей средой. Последней частью головоломки запуска является использование cmd.exe /K для запуска командной оболочки и возврата к подсказке, когда оболочка активна. Общая концепция довольно проста.

Что такое файлы .msi?

MSI — это расширение файла, которое применяется к файлам базы данных, используемым установщиком Microsoft Windows (MSI). Они содержат информацию о приложении, разделенную на функции и компоненты, и каждый компонент может содержать файлы, данные реестра, ярлыки и т. д.

Как вы прокомментируете Linux?

Как закомментировать файл в Unix?

Как прокомментировать строку с помощью sed?

Как вы делаете комментарии в Python?

Как вы комментируете в Python?

Как прокомментировать все выделенные строки в Python?

Как закомментировать скрипт?

Чтобы создать однострочный комментарий в JavaScript, поместите две косые черты «//» перед кодом или текстом, который интерпретатор JavaScript должен игнорировать. Когда вы помещаете эти две косые черты, весь текст справа от них будет игнорироваться до следующей строки.

Что такое комментарий в bash?

Как прокомментировать несколько строк?

Чтобы закомментировать несколько строк кода, щелкните правой кнопкой мыши и выберите "Источник" > "Добавить блочный комментарий". ( CTRL+SHIFT+/ ) Чтобы раскомментировать несколько строк кода, щелкните правой кнопкой мыши и выберите «Источник» > «Удалить блочный комментарий». ( CTRL+SHIFT+\ )

В чем разница между файлом bat и файлом CMD?

Как вы отвечаете да или нет в CMD?

Направьте эхо [y|n] на команды в Windows PowerShell или CMD, которые задают вопросы «Да/Нет», чтобы отвечать на них автоматически.

Как открыть Блокнот в CMD?

Открыть Блокнот с помощью командной строки

Откройте командную строку — нажмите Windows-R и запустите Cmd, или в Windows 8 нажмите Windows-X и выберите «Командная строка» — и введите «Блокнот», чтобы запустить программу. Сама по себе эта команда открывает Блокнот так же, как если бы вы загрузили его через меню «Пуск» или с экрана «Пуск».

Как прокомментировать несколько строк в скрипте Unix?

Как прокомментировать строку в crontab?

КАК комментарий может начинаться в файле сценария оболочки Mcq?

Что делает эхо-отключение?

Команды ECHO-ON и ECHO-OFF используются для включения и выключения повторения или отображения на экране символов, введенных с клавиатуры. Если эхо отключено, ввод не будет отображаться на экране терминала по мере ввода. … Команда ECHO-OFF подавляет эхо для терминала, подключенного к указанному процессу.

комментарий к пакетному файлу, несколько строк
комментарий к пакетному файлу, windows 10
комментарий к пакетному файлу
команды к пакетному файлу
игнорировать строку в пакетном файле
rem к пакетному файлу< br />переменные в пакетных файлах
пауза в пакетном файле

Читайте также:

Примечание. У этого трюка есть один существенный недостаток: использование скобок в блоке комментариев не допускается.