windows - 批量设置REM为变量,让代码看起来不一样

标签 windows batch-file variables cmd

最近我开始将行注释为 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/

相关文章:

windows - 有没有办法改变非客户区的 Windows Aero 颜色?

c++ - native 应用程序的初始内存占用量大

java - Windows 批处理 & java : Combining -XX:OnOutOfMemoryError command and batch parameters

PHP/MYSQL : What's Wrong With My Query/PHP variable in query

windows - 我可以直接使用 SAPI 将语音从存储的音频实时转换为文本吗

c - 从 Windows 到 Linux 的语法错误 Fluent UDF

windows - 将特定子文件夹中的文件移动到另一个子文件夹

windows - 使用 Nircmd 截取带有日期时间文件名的屏幕截图

python - 如何使用迭代和变量替换字符串中的字符? (Python)

c++ - 全局变量和静态全局变量