我有一个批处理文件,运行几个python脚本,做表修改。

我想让用户注释掉1-2个他们不想运行的python脚本,而不是从批处理文件中删除它们(这样下一个用户就知道这些脚本作为选项存在!) 我还想添加注释,以引起他们的注意,特别是他们在运行批处理文件之前需要更新的变量。我看到我可以使用REM,但它看起来更像是在用户运行后更新进度。

是否有更适当地添加注释的语法?


当前回答

使用::或REM

::   commenttttttttttt
REM  commenttttttttttt

但是(正如人们所指出的):

如果它们不在行首,则添加&字符: 你的命令在这里&::commenttttttttttt 在嵌套部分(IF/ELSE, FOR循环等…)::后面应该跟着法线,否则会给出错误(在那里使用REM)。 ::在setlocal enabledelayeexpansion中也可能失败

其他回答

这是一个古老的话题,我想在这里补充我的理解,扩展这个有趣的话题的知识。

REM和::之间的关键区别是:

REM本身是一个命令,而::不是。

我们可以把::作为一个令牌,只要CMD解析器在一行中遇到第一个非空白空格,它就会跳过整行,读取下一行。这就是为什么REM后面至少应该有一个空格,以便能够作为该行的注释,而::后面不需要任何空格。

REM本身是一个命令,从下面的FOR语法可以更好地理解

基本的FOR语法如下

FOR %v in (set) DO <Command> [command param] 

这里<命令>可以是任何有效的命令 因此,我们可以编写以下有效的命令行,因为rem是一个命令

FOR %i in (1,2,3) DO rem echo %i

然而,我们不能把下面的行写成::不是命令

FOR %i in (1,2,3) DO :: echo %i

使用::或REM

::   commenttttttttttt
REM  commenttttttttttt

但是(正如人们所指出的):

如果它们不在行首,则添加&字符: 你的命令在这里&::commenttttttttttt 在嵌套部分(IF/ELSE, FOR循环等…)::后面应该跟着法线,否则会给出错误(在那里使用REM)。 ::在setlocal enabledelayeexpansion中也可能失败

在电脑速度不是很快的年代,::代替快速眼动是最好的选择。 REM'ed行被读取,然后忽略。:“埃德一行都被忽略了。”这可以在“过去”加速你的代码。而且在快速眼动之后你需要一个空间,在::之后你不需要。

正如第一条评论所说:你可以在任何你觉得需要的行中添加信息

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来注释一些东西:

your commands here
:: commenttttttttttt

or

your commands here
REM  commenttttttttttt

 

为了在同一行执行命令,你必须添加一个&号:

your commands here      & ::  commenttttttttttt

or

your commands here      & REM  commenttttttttttt

 

注意:

在嵌套逻辑(IF-ELSE, FOR循环等)中使用::将导致错误。在这种情况下,用REM代替。

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

我能说什么呢?批处理文件是时代的遗迹,它们笨重而丑陋。

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

编辑:修改了示例,使其包含你显然正在寻找的元素。