我有一个批处理文件,运行几个python脚本,做表修改。
我想让用户注释掉1-2个他们不想运行的python脚本,而不是从批处理文件中删除它们(这样下一个用户就知道这些脚本作为选项存在!) 我还想添加注释,以引起他们的注意,特别是他们在运行批处理文件之前需要更新的变量。我看到我可以使用REM,但它看起来更像是在用户运行后更新进度。
是否有更适当地添加注释的语法?
我有一个批处理文件,运行几个python脚本,做表修改。
我想让用户注释掉1-2个他们不想运行的python脚本,而不是从批处理文件中删除它们(这样下一个用户就知道这些脚本作为选项存在!) 我还想添加注释,以引起他们的注意,特别是他们在运行批处理文件之前需要更新的变量。我看到我可以使用REM,但它看起来更像是在用户运行后更新进度。
是否有更适当地添加注释的语法?
当前回答
你可以使用::或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评论 &REM内联注释
例子:
@echo off
set parameter1=%1%
REM test if the parameter 1 was received
if defined parameter1 echo The parameter 1 is %parameter1% &REM Display the parameter
在电脑速度不是很快的年代,::代替快速眼动是最好的选择。 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作为注释。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
我能说什么呢?批处理文件是时代的遗迹,它们笨重而丑陋。
你可以在这个网站上阅读更多。
编辑:修改了示例,使其包含你显然正在寻找的元素。
注释一行
对于注释行,使用REM或::though::可能会在括号内失败
在以!<分隔符开头的延迟展开行中,>将被忽略,因此可以用于注释:
@echo off
setlocal enableDelayedExpansion
echo delayed expansion activated
!;delayed expansion commented line
echo end of the demonstration
在行末注释
对于行末的注释,您可以再次使用rem和::结合&:
echo --- &:: comment (should not be the last line in the script)
echo --- &rem comment
在文件末尾注释
因为exit命令后会被解析,你可以使用它在文件末尾添加注释:
@echo off
echo commands
exit /b
-------------------
commnts at the end
of the file
------------------
内联注释
不存在的变量的展开将被什么都不替换,并且设置一个变量=相当困难,你可以在内联注释中使用这个:
@echo off
echo long command %= this is a comment =% with an inline comment
多行注释
对于多行注释,可以使用GOTO(用于括号外)和REM带有条件执行(用于括号内)。详情如下:
@echo off
echo starting script
goto :end_comments
comented line
one more commented line
:end_comments
echo continue with the script
(
echo demonstration off
rem/||(
lines with
comments
)
echo multiline comment inside
echo brackets
)
同样的技术用宏来美化:
@echo off
::GOTO comment macro
set "[:=goto :]%%"
::brackets comment macros
set "[=rem/||(" & set "]=)"
::testing
echo not commented 1
%[:%
multi
line
comment outside of brackets
%:]%
echo not commented 2
%[:%
second multi
line
comment outside of brackets
%:]%
::GOTO macro cannot be used inside for
for %%a in (first second) do (
echo first not commented line of the %%a execution
%[%
multi line
comment
%]%
echo second not commented line of the %%a execution
)
多行注释
如果有大量的行你想注释掉,那么如果你能多行注释而不是每一行都注释掉会更好。
看看Rob van der Woude在评论区发布的这篇文章:
The batch language doesn't have comment blocks, though there are ways to accomplish the effect. GOTO EndComment1 This line is comment. And so is this line. And this one... :EndComment1 You can use GOTO Label and :Label for making block comments. Or, If the comment block appears at the end of the batch file, you can write EXIT at end of code and then any number of comments for your understanding. @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...