程序可以运行并不能说明是可以跳进组合内的,看看下面的代码,本来组合输出是已经转向到aa.txt的,
可是经过goto :后,就不再是输出到aa.txt,而是到屏幕了。
还有echo %%a结果也不正确,说明for令牌已经无效
goto :1到所指的标号后,批处理是重新读取程序流,已经不把后面的代码当作还在同一组合,而是重新开始一个新起点。
其原因是批处理运行的预处理机制所至,请试运行下面的代码,此代码是一个死循环,按几次空格后,再打开源码看看就会发现会在后面多了几行。可以证实批处理运行是现读现运行的。
-
- @echo off
- (for %%a in (aa bb) do (
- echo %%a 1
- goto 1
- :3
- echo,3333333333
- goto end
- :2
- echo,2222222222
- goto 3
- :1
- echo,1111111111
- goto 2
-
- :end
- rem end
- echo %%a 2
- )
- )>aa.txt
- set abc=echo %%abc%%^^^>^^^>%%0^^^&pause
- echo %abc%>>%0&pause
-
复制代码
|