你有两个问题。
一个问题是 goto 破坏了 for 循环。
另一方面,括号中的标签相当困难。
goto 会中断always 和所有嵌套循环,即使goto 的标签位于同一块中,并且for 变量在跳转后立即丢失。
括号中的标签是“两行”导向的!
我尝试了标签,下面是括号的一些结果。
当出现标签时,下一行必须采用正确的“辅助”行格式。
这就是失败的原因。
(
:this label fails with a syntax error
)
(
:this works
:because this line is a "legal" secondary line
)
(
:: The remark style
:: fails, because it's not "legal" to use a double colon, because it's not a legal path (in the most cases)
)
(
:and now I got courious & echo This will not echo'd
:but & echo You can see this !
)
对于第二行,跳过批处理解析器的一些步骤。
@
不起作用,@echo Hello
尝试启动一个名为@echo.bat
.
括号的分割失败,就像echo( hello
.
标签作为文件名处理,:echo
仅检查如果:echo
是一个有效的文件名,然后跳过这部分。
::hello
在驱动器上搜索::
.
出于测试目的,驱动器::
可以创建为subst :: c:\temp
.
由于第二行上的标签被简单地忽略,& 符号和管道也可以工作,但文件上::
必须存在。
(
echo @echo This is %~f0
) > %TEMP%\testLabel.bat
REM create Drive ::
subst :: %temp%
(
:Label
::\testLabel.bat The bat will not be executed | echo But this
)
subst /D ::