Mat*_*dge 12 windows batch-file
我的批处理文件有问题(Windows 7 x64).我已设法将其减少到以下(有两个空的注释行;似乎没有关于是否有实际的注释):
@echo off
if /i [%1]==[] (
    echo A
    ::
    ::
    echo B
)
将它放在批处理文件中,然后在没有参数的情况下运行它会产生以下输出:
A
The system cannot find the drive specified.
B
删除的一个::线条,或删除周围if,修复让你获得预期的输出的事情:
A
B
这里发生了什么?为什么要寻找驱动器?
编辑
感谢您的回复.所以我的问题可以归结为:
确定
::"评论开始"或"驱动字母冒号"的含义是什么规则?
也许更容易切换回REM添加注释,因此没有模棱两可的余地,但我发现::风格更容易阅读.
jeb*_*jeb 21
这在批处理代码块中是一种令人讨厌的效果.
在代码块中,一行中的标签总是需要具有完全不同语法规则的辅助行(对于辅助行).
SO:goto命令不起作用
辅助行必须是命令或简单标签,但不能是括号,也不是双冒号,也不是附加括号的内部命令.
MC ND解释说:这里使用的是普通的驱动器号,这是真的!
但只有在辅助线上,甚至你可以用a来抑制错误subst :: C:\,这条线就像标签一样处理(你无法启动任何东西).
subst :: C:\
(
:label
::\windows\system32\calc.exe
)
&即使行是标签,辅助行也会接受.
失败的样本
(
:Label at the end fails
)
(
:label
  ( 
    echo new Block fails
  )
echo ...
)
(
:label
:: Double colon fails
)
(
:label
echo( fails also, as now a file named "echo(" is searched for execution
)
现在是工作的
(
::Works
:with a "normal" label in the second line
)
(
:But this label! & echo This will not echo'd
:but & echo You can see this !
)
(
:label
echo or a simple command works too
)
有时::用作注释样式,如果您不关心辅助线,这可能会导致块内部出现问题.
编辑:回答你的第二个问题
确定::表示"评论开始"或"驱动字母冒号"的规则是什么?
第一个::总是注释或标签,在下一行它总是一个drive letter colon.