最近我开始将行注释为 double::,但我知道它可能会在较长的“for”或“choice”脚本中产生问题,以及描述“goto”的问题 What does :: (double colon) mean in DOS batch files?
所以我想知道是否可以将变量设置为 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 =%
。最后一个语法只是一个 undefined variable ,它被展开为空。名称中包含=
的动态伪变量只有少数,任何批处理变量的名称中都不可能包含两个=
。因此,只要注释不包含 :
或 %
,该技术就可以安全使用。
关于windows - 批量设置REM为变量,让代码看起来不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43410288/