返回列表 发帖

[原创] 批处理goto标签与目标标签分隔符

@echo off
echo.goto标签与目标标签引导符测试:
echo.
echo.  cmd处理goto传来的源标签时
echo.  会先忽略前导的所有空格、等号、逗号、分号,
echo.  然后会再忽略前导的一个冒号或加号(如果有的话),直到遇到合法的标签字符
echo.
echo.  cmd处理要跳转的目标标签时
echo.  会先忽略前导的所有空格、等号、逗号、分号,直到遇到冒号
echo.  然后会再次忽略其后的所有空格、等号、逗号、分号,直到遇到合法的标签字符
echo.
echo.开始goto...
goto 标签1
echo 无法跳转到标签1.
:标签1
echo. 到达标签1.
pause
goto ,=;:标签2
echo 无法跳转到标签2.
  :  标签2
echo. 到达标签2.
pause
goto;;;===,,,   +标签3
echo 无法跳转到标签3.
;;;==:==;;;标签3
echo. 到达标签3.
pause
goto :eofCOPY
1

评分人数

    • CrLf: 感谢总结分享技术 + 1
天的白色影子

本帖最后由 qzwqzw 于 2012-3-21 14:36 编辑
@echo off
echo.goto标签与目标标签结束符测试:
echo.
echo.  cmd将加号、冒号、回车、换行、TAB、空格作为两种标签的公用的结束符
echo,
echo.  cmd处理goto源标签时,已经预先脱去了^& ^| ^< ^> ^( ^) 等符号
echo.  此时还会以等号、分号、逗号作为结束符
echo.
echo.  cmd处理要跳转的目标标签时,仍然是原始的字符串
echo.  此时还会以^&、^|、^<、^>作为结束符,除非遇到转义字符^^
echo.
echo.开始goto...
goto ^<标签1^>
echo 无法跳转到标签1.
:^<标签1^>
echo. 到达^<标签1^>.
pause
goto 标签^|2:被忽略的文本
echo 无法跳转到标签2.
:标签^|2:被忽略的文本
echo. 到达标签^|2.
pause
goto 标签3^&L+被忽略的文本
echo 无法跳转到标签3.
:标签3^&L 被忽略的文本
echo. 到达标签3^&L.
pause
goto 标签4=;,=;,被忽略的文本
echo 无法跳转到标签4.
:标签4&|<>被忽略的文本
echo. 到达标签4
pauseCOPY
天的白色影子

TOP

我以为没人感兴趣呢!~
比较实用的是如何实现将标签变量化。
set  lable=menu
call :menu
pause&exit
:%lable%
echo;我是标签
pause
goto :eofCOPY
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

我也以为没人关注呢
网速太慢,抢楼失败,放弃后续
天的白色影子

TOP

本帖最后由 CrLf 于 2012-3-21 16:01 编辑

两天看到的这个帖子也和标签的预处理相关,顺手发个链接以便横向参考:
http://bbs.bathome.net/viewthread.php?tid=15680

TOP

call 也无法传递 &、|、<、> 等特殊字符, goto 的规则是否与 call 通用呢?

TOP

返回列表