[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
goto :eof 其实是相当于Continue的效果,跳转到结尾。
你测试如下代码,就知道如何return call了
  1. call :aa &&echo aa is true! || echo aa is false!
  2. call :bb &&echo bb is true! || echo bb is false!
  3. pause&exit
  4. :aa
  5. exit /b 0
  6. echo not retrun aa!
  7. goto :eof
  8. :bb
  9. exit /b 1
  10. echo not retrun bb!
复制代码
那么试试下面的
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1,1,3) do call :loop && echo ok! || echo 3次检查中不存在2的倍数。
  3. pause&goto :eof
  4. :loop
  5. for /l %%a in (1,1,3) do (
  6.        echo %%a
  7.        set /a r=%%a%%2
  8.         if !r! equ 0 exit /b 0
  9. )
  10. exit /b 1
复制代码

[ 本帖最后由 caruko 于 2010-7-28 01:20 编辑 ]

TOP

goto :eof 如果在 括号内,就等于括号结束。

因此,在for 循环中的goto :eof 就等于直接结束该次循环,忽略后面的代码。所以说它对于for是Continue 是没错的。

如下:
当%%a=3的时候,跳过了后面 ) 前的代码,但是loop的最后一句不在()内,不会跳过。
因此它输出
1 is not skip
2 is not skip
4 is not skip
5 is not skip
not skip this。
...
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1,1,3) do call :loop
  3. pause&goto :eof
  4. :loop
  5. for /l %%a in (1,1,5) do (
  6.         if %%a equ 3 goto :eof
  7.         echo %%a not skip!
  8. )
  9. echo not skip this。
复制代码

TOP

返回列表