Існує ряд способів коментування в пакетному файлі
1) Використання рем
Це офіційний шлях. Виконання ::
, мабуть, займає більше часу, ніж , хоча, мабуть, припиняє синтаксичний аналіз, перш ніж опрацювати догляд. Відсоток розширення відбувається перед повторним і ::
ідентифікується, тому неправильне відсоткове використання, тобто%~
призведе до помилок, якщо відсоток присутній. Безпечно використовувати в будь-якому місці в кодових блоках.
2) Використання міток :
, ::
або:;
т.п.
Бо :: comment
": comment" - недійсне ім'я мітки, оскільки воно починається з недійсного символу. Добре використовувати двокрапку в середині етикетки. Якщо простір починається на початку етикетки, він видаляється : label
стає :label
. Якщо в середині мітки з’являється пробіл або двокрапка, решта імені не інтерпретується, що означає, що якщо є дві мітки, :f:oo
і :f rr
обидві будуть інтерпретовані як, :f
і до них буде перескановано лише пізніше визначена мітка у файлі. Решта етикетки - це фактично коментар. Є кілька альтернатив ::
, перерахованих тут . Ви ніколи не можете goto
або ярлик. і не вийде.call
::foo
goto :foo
goto ::foo
Вони добре працюють поза кодовими блоками, але після того, як мітка в кодовому блоці, недійсна чи ні, має бути дійсний командний рядок. :: comment
це справді ще одна дійсна команда. Він трактує це як команду, а не мітку; команда має перевагу. Яка команда cd до ::
тома, яка буде працювати, якщо ви виконали subst :: C:\
, інакше ви не можете знайти помилку гучності. Ось чому :;
це, мабуть, краще, тому що його не можна інтерпретувати таким чином, і тому він інтерпретується як мітка, яка служить дійсною командою. Це не рекурсивно, тобто наступна мітка після неї не потребує команди. Тому вони приходять у двійки.
Вам потрібно надати дійсну команду після мітки, наприклад echo something
. Мітка в кодовому блоці повинна містити щонайменше одну дійсну команду, тому рядки надходять парами по дві. Ви отримаєте несподівану )
помилку, якщо в наступному рядку буде пробіл або дужки, що закриваються. Якщо між двома ::
рядками є пробіл, ви отримаєте помилкову синтаксичну помилку.
Ви також можете скористатися оператором caret в ::
коментарі так:
@echo off
echo hello
(
:;(^
this^
is^
a^
comment^
)
:;
)
:;^
this^
is^
a^
comment
:;
)
Але вам потрібна остання :;
з причини, зазначеної вище.
@echo off
(
echo hello
:;
:; comment
:; comment
:;
)
echo hello
Це добре, поки є парне число. Це, безсумнівно, найкращий спосіб коментувати - 4 рядки та :;
. З :;
вами не виникає помилок, які потрібно придушити за допомогою 2> nul
або subst :: C:\
. Ви можете використати subst :: C:\
для усунення помилки не знайденого обсягу, але це означає, що вам доведеться також вставити C: у код, щоб запобігти становленню вашої робочої каталоги ::\
.
Для коментаря в кінці рядка ви можете зробити
command &::
або command & rem comment
, але по- , як і раніше має бути парне число, наприклад , так:
@echo off
(
echo hello & :;yes
echo hello & :;yes
:;
)
echo hello
Перший echo hello & :;yes
має дійсну команду в наступному рядку, але другий & :;yes
- ні, тому йому потрібна одна, тобто :;
.
3) Використання недійсної змінної середовища
%= comment =%
. У пакетному файлі змінні середовища, які не визначені, видаляються із сценарію. Це дає можливість використовувати їх у кінці рядка без використання &
. Це звичайно використовувати недійсну змінну середовища, тобто таку, яка містить знак рівності. Додаткових рівних не потрібно, але це виглядає симетрично. Також імена змінних, що починаються з "=", зарезервовані для незадокументованих динамічних змінних. Ці динамічні змінні ніколи не закінчуються на "=", тому, використовуючи "=" як на початку, так і в кінці коментаря, немає можливості зіткнення імені. Коментар не може містити %
або :
.
@echo off
echo This is an example of an %= Inline Comment =% in the middle of a line.
4) Як команда, перенаправляючи stderr на нуль
@echo off
(
echo hello
;this is a comment 2> nul
;this is another comment 2> nul
)
5) В кінці файлу все після незакритих дужок - це коментар
@echo off
(
echo hello
)
(this is a comment
this is a comment
this is a comment