[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
for内相当于一个组合,

set a=aaa
:next
set b=bbb

一个组合,批处理是作为一个整体的,如同:
set a=aaa&:next&set b=bbb
一样的效果,

也就是在跳转时是插不进去的!
1

评分人数

TOP

不信,试了,就知道了

TOP

程序可以运行并不能说明是可以跳进组合内的,看看下面的代码,本来组合输出是已经转向到aa.txt的,
可是经过goto :后,就不再是输出到aa.txt,而是到屏幕了。
还有echo %%a结果也不正确,说明for令牌已经无效

goto :1到所指的标号后,批处理是重新读取程序流,已经不把后面的代码当作还在同一组合,而是重新开始一个新起点。
其原因是批处理运行的预处理机制所至,请试运行下面的代码,此代码是一个死循环,按几次空格后,再打开源码看看就会发现会在后面多了几行。可以证实批处理运行是现读现运行的。

  1. @echo off
  2. (for %%a in (aa bb) do (
  3. echo %%a 1
  4. goto 1
  5. :3
  6. echo,3333333333
  7. goto end
  8. :2
  9. echo,2222222222
  10. goto 3
  11. :1
  12. echo,1111111111
  13. goto 2
  14. :end
  15. rem end
  16. echo %%a 2
  17. )
  18. )>aa.txt
  19. set abc=echo %%abc%%^^^>^^^>%%0^^^&pause
  20. echo %abc%>>%0&pause
复制代码
1

评分人数

    • Lumiere: 严重感谢道出了问题实质PB + 9

TOP

返回列表