【问题标题】:What is a broken label?什么是破损标签?
【发布时间】:2019-07-27 17:11:55
【问题描述】:

关于我的问题here,我需要问一下为什么在代码块中使用:: 而不是REM 是不好的(在结果和实践中):

for %%a in (*.pdf) do (
:: This bad, but why?
)

谁能给我解释一下?从而恢复我对批处理文件的信心!

【问题讨论】:

标签: windows batch-file label comments


【解决方案1】:

它是一个损坏标签的原因可以通过这段代码来证明:

@ECHO On
SETLOCAL
GOTO fred
ECHO miss this 1
:fred
GOTO :bill
ECHO miss this 2
:bill
GOTO ::charlie
echo miss this 3
::charlie
ECHO all done!
GOTO :EOF

也就是说,前导: 表示一个标签,但标签名称本身可能不是以: 开头。现在:label:with:colons是否是一个有效的标签,我将留给热心的实验者。我更愿意遵守一个简单的规则 - 标签名称中没有冒号。

至于 no-labels-in-code-blocks 规则,请记住 cmd 的历史。有一次,不允许使用代码块。它是一个头脑简单的处理器,从一开始就可能学到了很多东西。它想要保持向后兼容性,所以假设我们在一个块中遇到了一些常见的结构:

转到标签,转到:标签,调用标签,调用:标签

这给我们留下了可能的返回路径和解释可能性的噩梦。 goto outofblock 是否终止该块? goto inblock 是否终止迭代?

因此,头脑简单的规则,块中没有标签。我记得 jeb 制定了一套可以使用标签 的规则,这很有趣。这里是a video

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多