Board logo

标题: [原创] 批处理goto标签与目标标签分隔符 [打印本页]

作者: qzwqzw    时间: 2012-3-21 12:11     标题: 批处理goto标签与目标标签分隔符

  1. @echo off
  2. echo.goto标签与目标标签引导符测试:
  3. echo.
  4. echo.  cmd处理goto传来的源标签时
  5. echo.  会先忽略前导的所有空格、等号、逗号、分号,
  6. echo.  然后会再忽略前导的一个冒号或加号(如果有的话),直到遇到合法的标签字符
  7. echo.
  8. echo.  cmd处理要跳转的目标标签时
  9. echo.  会先忽略前导的所有空格、等号、逗号、分号,直到遇到冒号
  10. echo.  然后会再次忽略其后的所有空格、等号、逗号、分号,直到遇到合法的标签字符
  11. echo.
  12. echo.开始goto...
  13. goto 标签1
  14. echo 无法跳转到标签1.
  15. :标签1
  16. echo. 到达标签1.
  17. pause
  18. goto ,=;:标签2
  19. echo 无法跳转到标签2.
  20.   :  标签2
  21. echo. 到达标签2.
  22. pause
  23. goto;;;===,,,   +标签3
  24. echo 无法跳转到标签3.
  25. ;;;==:==;;;标签3
  26. echo. 到达标签3.
  27. pause
  28. goto :eof
复制代码

作者: qzwqzw    时间: 2012-3-21 12:51

本帖最后由 qzwqzw 于 2012-3-21 14:36 编辑
  1. @echo off
  2. echo.goto标签与目标标签结束符测试:
  3. echo.
  4. echo.  cmd将加号、冒号、回车、换行、TAB、空格作为两种标签的公用的结束符
  5. echo,
  6. echo.  cmd处理goto源标签时,已经预先脱去了^& ^| ^< ^> ^( ^) 等符号
  7. echo.  此时还会以等号、分号、逗号作为结束符
  8. echo.
  9. echo.  cmd处理要跳转的目标标签时,仍然是原始的字符串
  10. echo.  此时还会以^&、^|、^<、^>作为结束符,除非遇到转义字符^^
  11. echo.
  12. echo.开始goto...
  13. goto ^<标签1^>
  14. echo 无法跳转到标签1.
  15. :^<标签1^>
  16. echo. 到达^<标签1^>.
  17. pause
  18. goto 标签^|2:被忽略的文本
  19. echo 无法跳转到标签2.
  20. :标签^|2:被忽略的文本
  21. echo. 到达标签^|2.
  22. pause
  23. goto 标签3^&L+被忽略的文本
  24. echo 无法跳转到标签3.
  25. :标签3^&L 被忽略的文本
  26. echo. 到达标签3^&L.
  27. pause
  28. goto 标签4=;,=;,被忽略的文本
  29. echo 无法跳转到标签4.
  30. :标签4&|<>被忽略的文本
  31. echo. 到达标签4
  32. pause
复制代码

作者: cjiabing    时间: 2012-3-21 13:03

我以为没人感兴趣呢!~
比较实用的是如何实现将标签变量化。
  1. set  lable=menu
  2. call :menu
  3. pause&exit
  4. :%lable%
  5. echo;我是标签
  6. pause
  7. goto :eof
复制代码

作者: qzwqzw    时间: 2012-3-21 13:24

我也以为没人关注呢
网速太慢,抢楼失败,放弃后续
作者: CrLf    时间: 2012-3-21 15:58

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

两天看到的这个帖子也和标签的预处理相关,顺手发个链接以便横向参考:
http://bbs.bathome.net/viewthread.php?tid=15680
作者: CrLf    时间: 2012-3-21 16:06

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




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2