Как "закомментировать" (добавить комментарий) в пакете/cmd?


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

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

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

есть ли синтаксис для более точного добавления комментария?

7 665

7 ответов:

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

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

@echo off
REM To skip the following Python commands, put "REM" before them:
python foo.py
python bar.py

your commands here :: commenttttttttttt

или

your commands here REM commenttttttttttt

Примечания:

  • во вложенных логика (IF-ELSE,FOR петли и т. д...):: срабатывает ошибка, поэтому используйте REM там или бежать с помощью ^ персонаж, бывший. ^( и ^)

  • в определенных случаях (если вы используете его встроенным), вам может потребоваться добавить & знак: & :: commenttttt

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

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

REM it starts here the section below can be safely erased once the file is customised
ECHO Hey you need to edit this file before running it!  Check the instructions inside
ECHO Now press ctrl-c to interrupt execution or enter to continue
PAUSE
REM erase the section above once you have customised the file
python executed1.py
ECHO Skipping some stuff now
GOTO End
python skipped1.py
python skipped2.py
:END
python executed2.py

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

вы можете подробнее на этом сайте.

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

вместо REM было предпочтительно использовать в те дни, когда компьютеры были не очень быстрыми. REM ' Ed строки читаются, а затем ingnored. :: 'ed линии игнорируются полностью. Это может ускорить ваш код в "старые времена". Далее больше после REM вам нужно пространство, после :: вы не делаете.

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

SET DATETIME=%DTS:~0,8%-%DTS:~8,6% ::Makes YYYYMMDD-HHMMSS

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

SOME CODE

GOTO LABEL  ::REM OUT THIS LINE TO EXECUTE THE CODE BETWEEN THIS GOTO AND :LABEL

SOME CODE TO SKIP
.
LAST LINE OF CODE TO SKIP

:LABEL
CODE TO EXECUTE

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

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

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

GOTO EndComment1
This line is comment.
And so is this line.
And this one...
:EndComment1

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

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

@ECHO OFF
REM Do something
  •
  •
REM End of code; use GOTO:EOF instead of EXIT for Windows NT and later
EXIT

Start of comment block at end of batch file
This line is comment.
And so is this line.
And this one...

Источник Комментарии

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

color C          & :: set red font color
echo IMPORTANT INFORMATION
color            & :: reset the color to default

объяснение:

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


важно:

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

goto error1         :: handling the error

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

goto error1 handling the error

но подобная попытка

color 17            :: grey on blue

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

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

color 17     &      :: grey on blue

так что амперсанд-это неизбежно.

вы можете прокомментировать то, что с помощью :: или REM:

your commands here
:: commenttttttttttt

или

your commands here
REM  commenttttttttttt

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

your commands here      & ::  commenttttttttttt

или

your commands here      & REM  commenttttttttttt

Примечание:

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