batch-file - 如何在批处理/ cmd中“注释”(添加注释)?




comments commenting comment-conventions (6)

这个问题在这里已经有了答案:

我有一个批处理文件,它运行多个执行表修改的python脚本。

  1. 我想让用户注释他们不想运行的1-2个Python脚本,而不是将它们从批处理文件中删除(所以下一个用户知道这些脚本作为选项存在!)

  2. 我还想添加注释,以便特别注意它们在运行之前需要在批处理文件中更新的变量。 我看到我可以使用REM 。 但它看起来更像是在用户运行后更新进度。

是否有更适当地添加评论的语法?


Answers

使用:: :(替代REM

your codes      ::   commenttttttttttt 
your codes      REM  commenttttttttttt 

笔记:

  • 使用::可能会在嵌套逻辑( IF-ELSEFOR循环等)中导致不同的错误,并且在大多数情况下可以尝试使用代码标准REM

  • 在某些情况下,您可能需要添加 sign: & :: commenttttttttttt

ps我不知道为什么发明人找不到比REM更好的符号。


在计算机速度不是很快的日子里,最好使用::而不是REM。 REM'ed行被读取,然后ingnored。 ::'ed行一直被忽略。 这可以加快你的代码在“过去的日子”。 在REM之后,你还需要一个空间,在::之后你不需要。

正如第一条评论所述:您可以将信息添加到您认为需要的任何行

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

至于跳过零件。 将REM放在每条线的前面可能会相当耗时。 如上所述,使用GOTO跳过部分是一种跳过大部分代码的简单方法。 请务必在您希望代码继续的位置设置:LABEL。

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

rem命令的确是用于评论。 在运行脚本之后,它本身不会更新任何人。 但是,某些脚本作者可能会用这种方式代替echo ,因为默认情况下,批处理解释器会在处理每个命令之前打印出每个命令。 由于rem命令没有做任何事情,所以打印没有副作用是安全的。 要避免打印命令,请在@前面加上前缀,或者在整个程序中应用该设置,请@echo off 。 (这样可以避免打印更多命令; @将避免在回显设置生效之前打印命令。)

所以,在你的批处理文件中,你可以使用这个:

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

不,普通的旧批处理文件使用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

我能说什么? 批处理文件是时代早已逝去的遗留物,它们笨重难看。

你可以在这个网站上阅读更多。

编辑:修改了一下这个例子,让它包含你显然在寻找的元素。


将注释放在与命令相同的行上:使用& :: 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

由于color命令未知的4个参数::greyonblue ,执行命令失败。

它只会作为:

color 17     &      :: grey on blue

所以和号是不可避免的。


另一种方法:

如果

  • 您的YAML结构具有明确定义的字段供您的应用程序使用
  • 并且您可以自由添加其他不会干扰您的应用的字段

然后

  • 在任何级别上,您都可以添加一个名为“Description”或“Comment”或“Notes”或其他名称的新块文本字段

例:

代替

# This comment
# is too long

使用

Description: >
  This comment
  is too long

要么

Comment: >
    This comment is also too long
    and newlines survive from parsing!

更多优点:

  1. 如果注释变得庞大而复杂并且具有重复模式,则可以将它们从纯文本块提升为对象
  2. 您的应用可能会在未来阅读或更新这些评论




batch-file cmd comments commenting comment-conventions