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

我有一个batch file,运行几个python脚本来做表修改。

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

  2. 我也想添加注释,特别是在batch file运行之前需要更新的variables。 我看到我可以使用REM 。 但它看起来更像是用户在运行后更新进度。

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

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

所以,在你的batch file中,你可以使用这个:

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

使用:: :(或REM

 your codes :: commenttttttttttt 

笔记:

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

    ............................... & :: commenttttttttttt

  • 使用::可能错误脚本与setlocal ENABLEDELAYEDEXPANSION

不,原来的batch file使用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 

我能说什么? batch file是一个久远的遗留物,他们笨重和丑陋。

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

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

在计算机不是很快的日子里,最好使用::而不是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 

多行注释

如果您想要注释的行数很多,那么如果您可以进行多行注释而不是每行注释,那么会更好。

批处理语言没有注释块,尽pipe有办法来达到这个效果。

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

您可以使用GOTO标签和:标签来制作块注释。

或者,如果注释块出现在batch file的末尾,则可以在代码的末尾写入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... 

评论来源

将注释放在与命令相同的行上:使用& :: 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忽略了第一个参数的所有论点。 certificate是容易的,这个goto也不会失败:

 goto error1 handling the error 

但类似的尝试

 color 17 :: grey on blue 

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

它只会作为:

 color 17 & :: grey on blue 

所以和号是不可避免的。