最近,我开始将行注释为double ::,但我意识到它可以在长时间“for”或“select”脚本和“goto”中描述问题,因为它描述了什么::(双冒号)意味着在DOSbatch file?
所以我想知道是否可以将REM设置为REM并使用它?
我已经在一个小cmd脚本的地方见过,真的很喜欢它,因为它使批处理代码看起来更清晰。 但我不知道它会不会造成任何问题?
@echo off Set #=REM %#% show date echo it's %date% %#% let's wait few seconds... ping 1.1.1.1 > nul echo and now it's %date% %#% whatever exit
这是没有问题的,什么都不是。
变量有效地作为一个宏,我经常使用这种技术(虽然不是为了评论)。 批解析器在对代码逻辑进行任何解释之前,先将变量内的代码展开,所以它的功能与您所期望的完全相同。
实际上有一个复杂的技术来创建带有参数的批处理宏。 http://www.dostips.com/forum/viewtopic.php?f=3&t=2518的帖子描述了最终的语法,并且http://www.dostips.com/forum/viewtopic.php?t=1827显示随着时间的推移技术的发展。
使用%#%
作为REM
宏是完全有效的,没有一个“最好”的风格。 但是我更喜欢使用:: Comment
来表示不在括号内的块,而%= comment =%
表示在括号内的块内。 最后一个语法就是一个未定义的变量,它被扩展为无。 在名称中只有几个包含=
动态伪变量,并且任何批处理变量都不可能在名称中包含two =
。 所以只要注释不包含:
或%
该技术就可以安全使用。
当我在批处理中写一个rem注释时,我把它比当前代码缩进更多的空白。 由于我的代码缩进是2个空格,所以对我来说是如此的可读性,并立即落入眼中。
... rem my comment ...
在使用echo进行调试时,Rem注释很有帮助:行被读到行尾。 所有%variables%
以及参数%1 ... %9 %*
都被使用。 这意味着,rem注释中一个循环中的所有变量只能在开始时解决 – 因为rem命令在执行前显示一次,但在执行过程中保持沉默。
如果要在括号内显示调试各种变量,则必须使用echo rem显示这些变量。 对于这样的调试,最好设置一个变量,所以当调试关闭,然后rem else调试echo rem。
If defined debug (set "rem=echo rem") else set "rem=rem"
对于其他调试,不应该显示两次我使用变量%mon%
。 这个我用回声来呼应,并与rem回声。
rem < :checkEchoOn :checkEchoOn :: Liest ob ECHO ON oder OFF geschalten ist um variables zu setzen :: VAR Mon = read ECHO ON / OFF ;set Echo( / rem rem = :checkEchoOn @( rem ^%Mon% Zeilen bei Echo on auf REM umschalten echo>"%temp%\isOn.Ft" < "%temp%\isOn.Ft" find "ON" >nul if not errorlevel 1 set "Mon=rem" if errorlevel 1 set "Mon=echo(" del "%temp%\isOn.Ft" rem > END checkEchoOn if /i "%~0" equ ":CheckEchoOn" exit /b ) %mon% this is a visible comment - only once
正如戴夫已经写道是以2 doublecolon开始的注释不会在循环括号内开始。 让人们这样做,但在循环包。 这些::注释通常是对被调用的批处理或函数的解释。
请注意,这些行完全读入。 %Variable%
和参数%1 ... %9 %*
以及特殊字符被视为要执行的行(请参阅Jebs声明)。 独自一人已经是仔细写这些评论的原因了。 这些::注释行可以写成多行,这意味着在行末尾的(未被屏蔽的)脱字符,下面的行被认为是注释的延续。 因此,没有双重点的几个连续的评论线是可能的。
%== loop commentaries %
主要用于编码概述。
我使用的另一种评论是if-loop评论。 其中也用于调试,但只用于一次镜像功能。 为此,注释或者以*
开头,或者注释就像这样开始。 注意这个注释只是为了开始这个功能。 如果条件在正常情况下使用右括号终止。
... call :Sub1 if :Sub == begin ( * begin :Sub1 this will begin Sub1 :Sub1 4> "test.txt" ( >&4 echo this is a test ) exit /b if :Sub == END * END :Sub1 ) ...
例如,在版本变更的情况下,这也可以被使用。
... if :new == begin * begin Version 2.1 ... new code if :new == END * END Version 2.1 ...
最好的办法就是如何使用评论以及是否对你有用。 第二个方面是你也可以理解其他人的批语。 以及您使用注释为您正确记录您的代码。 这也是给你的。