Існує ряд способів коментування в пакетному файлі
1) Використання рем
Це офіційний шлях. Виконання ::, мабуть, займає більше часу, ніж , хоча, мабуть, припиняє синтаксичний аналіз, перш ніж опрацювати догляд. Відсоток розширення відбувається перед повторним і ::ідентифікується, тому неправильне відсоткове використання, тобто%~ призведе до помилок, якщо відсоток присутній. Безпечно використовувати в будь-якому місці в кодових блоках.
2) Використання міток :, ::або:; т.п.
Бо :: comment": comment" - недійсне ім'я мітки, оскільки воно починається з недійсного символу. Добре використовувати двокрапку в середині етикетки. Якщо простір починається на початку етикетки, він видаляється : labelстає :label. Якщо в середині мітки з’являється пробіл або двокрапка, решта імені не інтерпретується, що означає, що якщо є дві мітки, :f:ooі :f rrобидві будуть інтерпретовані як, :fі до них буде перескановано лише пізніше визначена мітка у файлі. Решта етикетки - це фактично коментар. Є кілька альтернатив ::, перерахованих тут . Ви ніколи не можете gotoабо ярлик. і не вийде.call::foogoto :foogoto ::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