Есть несколько способов комментировать в командном файле
1) Использование rem
Это официальный путь. По-видимому, выполнение занимает больше времени, чем ::, хотя, по-видимому, он прекращает синтаксический анализ раньше, чем обрабатываются символы. Процентное расширение происходит перед rem и ::идентифицируется, поэтому неправильное использование процентов, т.е.%~ приведет к ошибкам, если проценты присутствуют. Безопасно для использования в любом месте блоков кода.
2) Используя ярлыки :, ::или:; т.п.
Ибо :: comment': comment' является недопустимым именем метки, потому что оно начинается с недопустимого символа. Можно использовать двоеточие в середине метки. Если пробел начинается в начале метки, он удаляется : labelстановится :label. Если в середине метки появляется пробел или двоеточие, остальная часть имени не интерпретируется, что означает, что если есть две метки, :f:ooи :f rrобе будут интерпретироваться как, :fи будет переходиться только к более поздней определенной метке в файле. Остальная часть ярлыка фактически является комментарием. Есть несколько альтернатив ::, перечисленных здесь . Вы никогда не можете gotoили ярлык. и не будет работать.call::foogoto :foogoto ::foo
Они отлично работают вне блоков кода, но после метки в блоке кода, недействительной или нет, должна быть действительная командная строка. :: commentдействительно еще одна действительная команда. Это интерпретирует это как команду, а не метку; команда имеет приоритет. Это команда для записи на ::том, которая будет работать, если вы ее выполнили subst :: C:\, иначе вы получите сообщение об ошибке тома. Вот почему :;это возможно лучше, потому что это не может быть интерпретировано таким образом, и, следовательно, интерпретируется как метка, которая служит допустимой командой. Это не рекурсивно, т. Е. Следующая метка не нуждается в команде после нее. Вот почему они приходят по двое.
Вы должны предоставить действительную команду после метки, например echo something. Метка в блоке кода должна содержать хотя бы одну допустимую команду, поэтому строки идут парами по две. Вы получите неожиданную )ошибку, если на следующей строке есть пробел или закрывающая скобка. Если между двумя ::строками будет пробел, вы получите неверную синтаксическую ошибку.
Вы также можете использовать оператор ::комментария в комментарии следующим образом:
@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 на nul
@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