У меня есть пакетный файл, который запускает несколько сценариев Python, которые вносят изменения в таблицу.
Я хочу, чтобы пользователи закомментировали 1-2 сценария Python, которые они не хотят запускать, вместо того, чтобы удалять их из командного файла (чтобы следующий пользователь знал, что эти сценарии существуют как опции!)
Я также хочу добавить комментарии, чтобы привлечь их внимание конкретно к переменным, которые им необходимо обновить в пакетном файле, прежде чем они его запустят. Я вижу, что я могу использовать
REM
. Но похоже, что это больше для обновления пользователя с прогрессом после его запуска.
Есть ли синтаксис для более подходящего добавления комментария?
batch-file
cmd
comments
comment-conventions
user1397044
источник
источник
Rem Sth
команду или Использовать этот Марк::: Sth
Ответы:
Команда
rem
действительно для комментариев. По сути, он не обновляет никого после запуска скрипта. Некоторые авторы сценариев могут использовать его вместо этогоecho
, потому что по умолчанию пакетный интерпретатор распечатывает каждую команду до ее обработки. Посколькуrem
команды ничего не делают, их можно печатать без побочных эффектов. Чтобы избежать печати команды@
, запустите ее с префиксом или, чтобы применить этот параметр во всей программе@echo off
. (Этоecho off
нужно для того , чтобы не печатать дальнейшие команды;@
нужно избегать печати этой команды до вступления в силу настройки эха.)Итак, в вашем командном файле вы можете использовать это:
источник
REM This whole line is a comment
@echo off :: This comment is inline
#
комментариев, потому что#
, очевидно, он может быть недопустимым указателем комментариев во всех оболочках, которые должен поддерживать Configure; см. строку 3.Используйте
::
илиREM
НО (как отметили люди):
&
символ:your commands here & :: commenttttttttttt
IF/ELSE
,FOR
петли и т.д. ...) использованиеREM
, потому что::
дает ошибку.::
может потерпеть неудачу в течениеsetlocal ENABLEDELAYEDEXPANSION
источник
cd "C:\Folder" ::this throws a syntax error
git add :: blah this is not a comment
с "fatal: pathspec 'blah' не соответствует ни одному файлу"&
код и комментарий::
. Чтобы проиллюстрировать это, откройте командную строку cmd и запустите ее,dir ::blah
которая не перечисляет содержимое.
и не сравнивает ееdir & ::blah
, что делает::
сценариев ошибок сsetlocal ENABLEDELAYEDEXPANSION
иfor
Нет, простые старые командные файлы используют
REM
в качестве комментария.ECHO
это команда, которая печатает что-то на экране.Чтобы «закомментировать» разделы файла, вы можете использовать
GOTO
. Пример всех этих команд / методов:Что я могу сказать? пакетные файлы - это пережиток давних времен, они неуклюжие и уродливые.
Вы можете прочитать больше на этом сайте .
РЕДАКТИРОВАТЬ: немного изменил пример, чтобы он содержал элементы, которые вы, очевидно, ищете.
источник
:: вместо REM предпочтительно использовался в те дни, когда компьютеры работали не очень быстро. REM-строки читаются, а затем обрабатываются. Строка :: игнорируется полностью. Это может ускорить ваш код в «старые времена». Еще больше после REM вам нужен пробел, после :: вы не делаете.
И, как сказано в первом комментарии: вы можете добавить информацию в любую строку, в которой вы чувствуете необходимость
Что касается пропуска деталей. Помещение REM перед каждой строкой может занять довольно много времени. Как уже упоминалось, использование GOTO для пропуска частей - это простой способ пропустить большие куски кода. Обязательно установите: LABEL в той точке, в которой вы хотите, чтобы код продолжался.
источник
::
и вrem
равной степени.\n
а затем снова начинает анализировать [цитата нужна]Многострочные комментарии
Если есть большое количество строк, которые вы хотите закомментировать, то было бы лучше, если бы вы могли делать многострочные комментарии, а не комментировать каждую строку.
Смотрите этот пост Роба ван дер Вуде в комментариях :
источник
if
вместоgoto
stackoverflow.com/q/9074476/995714 ss64.com/vb/syntax-hybrid.html stackoverflow.com/a/34512715/995714Размещение комментариев в одной строке с командами: используйте
& :: comment
Объяснение:
&
разделяет две команды , поэтому в данном случаеcolor C
это первая команда и:: set red font color
вторая.Важный:
Это утверждение с комментарием выглядит интуитивно правильным:
но это не допустимое использование комментария. Это работает только потому, что
goto
игнорирует все аргументы после первого. Доказательство легко, этоgoto
также не подведет:Но похожая попытка
не удается выполнить команду из - за 4 аргументов неизвестной к
color
команде:::
,grey
,on
,blue
.Это будет работать только как:
Так что амперсанд неизбежен.
источник
Вы можете что-то закомментировать, используя
::
илиREM
:или
Чтобы сделать это в той же строке, что и команда, необходимо добавить амперсанд:
или
Замечания:
::
во вложенной логике (IF-ELSE
,FOR
циклов и т. Д.) Вызовет ошибку. В этих случаях используйтеREM
вместо этого.источник
@Rado
была объединена в ответе в то время, и спасибо за это, просто я предпочел другой стиль для ответа и использовал другой стиль.Это старая тема, и я хотел бы добавить свое понимание здесь, чтобы расширить знания этой интересной темы.
Основное различие между REM и :::
REM сама команда, а :: НЕ.
Мы можем рассматривать :: как токен, который, как только синтаксический анализатор CMD обнаружит первый непустой пробел в строке, будет следующим :: токеном, он просто пропустит всю строку и прочитает следующую строку. Вот почему за REM должен следовать хотя бы пробел, чтобы он мог функционировать в качестве комментария для строки, в то время как :: не нужно никакого пробела позади него.
Это РЗМ команда сама по себе может быть лучше понято из нижеследующего FOR синтаксиса
Основной синтаксис FOR следующий
здесь
<Command>
может быть любая действительная команда. Таким образом, мы можем написать следующую действительную командную строку какrem
командуТем не менее, мы не можем написать следующую строку, так как
::
это не командаисточник
::
это (недействительный) ярлык (который объясняет его поведение), и поэтому его не следует использовать (хотя он все еще довольно распространен)Вы можете добавить комментарии в конец командного файла с этим синтаксисом:
Просто убедитесь, что вы никогда не используете закрывающие скобки.
Атрибуты: Лео Гуттирез Рамирес на https://www.robvanderwoude.com/comments.php
источник