当我在批处理中写一个 rem 注释时,我把它放了一个比当前代码缩进更多的空白。
由于我的代码缩进是 2 个空格,所以对我来说非常易读,并且立即映入眼帘。
...
rem my comment
...
Rem cmets 在使用 echo on 进行调试时很有帮助:该行被读取到行尾。使用所有%variables% 以及参数%1 ... %9 %*。
然而,这意味着 rem 注释中循环内的所有变量仅在开始时解析 - 因为命令 rem 在执行前显示一次,但在执行期间保持静默。
如果要在括号内显示调试各种变量,则必须用 echo rem 显示。
对于这样的调试,建议设置一个变量,以便在调试关闭时 rem else 在调试 echo rem 时。
If defined debug (set "rem=echo rem") else set "rem=rem"
对于其他不应显示两次的调试,我使用变量%mon%。这是我在 echo off 到 echo 和 echo on rem 的情况下戴上的。
rem < :checkEchoOn
:checkEchoOn
:: Liest ob ECHO ON oder OFF geschalten ist um Variablen 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
正如 Dave 已经写的那样,以 2 双冒号开头的 cmets 不在循环括号内开始。让人们在循环包中仍然这样做。
这些 :: cmets 通常是对正在调用的批处理或函数的解释。
请注意,这些行已完全读入。 %Variable% 和参数 %1 ... %9 %* 以及特殊字符被视为在要执行的行上(参见 Jebs 声明)。
独自一人已经是仔细写这些评论行的原因。
这些 :: 注释行可以写成多行,这意味着在行尾的(未屏蔽的)插入符号,下一行被视为注释的延续。因此,多个连续的注释行没有双点是可能的。
%== loop commentaries % 主要用于代码概览。
我使用的另一种 cmets 是 if-loop 注释。这也用于调试,但只对功能进行一次镜像。为此,评论要么以* 开头,要么评论像这样开头。
请注意此 cmets 仅在函数开始之前。 if 条件通常在函数之后用右括号终止。
...
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
...
查看它的最佳方式是如何使用 cmets 使其发挥最大作用,以及它是否对您有用。
第二个方面是,您还可以理解其他人编写的批次。以及您使用 cmets 为您正确记录您的代码。它也适合你。