我有一个批处理文件问题(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
添加注释,这样就不会存在歧义,但我确实发现::
样式更易于阅读。
::
上,正如你所说的原因。第一行是一个标签,第二行应该是一个有效的命令,而::
可以被认为是有效的,因此它被执行了。是的,你可以使用start ::\windows\system32\calc.exe
来启动某些东西。正如之前所评论的,系统的并非所有部分都能够处理它。 - MC ND