Board logo

标题: [其他] 求助,能否在for循环中生成子函数的声明和代码 [打印本页]

作者: 20024jok    时间: 2017-6-16 11:47     标题: 求助,能否在for循环中生成子函数的声明和代码

本帖最后由 20024jok 于 2017-6-16 11:49 编辑

先是 select 函数:
  1. :select
  2. choice /c 12345 /n /m "请输入相应数字:"
  3. for /L %%i in (1,1,5) do (if errorlevel %%i goto setIP%%i )
复制代码
经过试验,用for循环能够生成类似 if errorlevel %%i goto setIP%%i 的跳转语句,

但我还想生成每个子函数  :setIP1 ~ :setIP5  的声明和语句,声明子函数名的 :setIP%%j 确没有生成,系统提示找不到函数声明:
  1. for /L %%j in (1,1,5) do (
  2. REM pause
  3. :setIP%%j
  4. netsh interface ip set address %NAME% static !IP%%j! %MASK% %GATE%
  5. goto :select
  6. )
复制代码
上面的跳转语句 goto :select 实验确定成功生成,可以跳转回 select 函数

// 附上应该在最前面的每个IP
  1. set NAME="本地连接 2"
  2. set "MASK=255.255.255.0"
  3. set GATE=192.168.10.1
  4. set IP1=111.111.1.111
  5. set IP2=192.168.2.222
  6. set IP3=192.168.3.333
  7. set IP4=444.44.444.4
  8. set IP5=555.55.555.5
复制代码
新人一枚,请高手们指点
作者: ivor    时间: 2017-6-16 20:35

标签是脚本预处理的时候做的
作者: ShowCode    时间: 2017-6-16 21:14

不可以。
请把它放到for循环外面。
作者: 老刘1号    时间: 2017-6-16 21:23

本帖最后由 老刘1号 于 2017-6-16 21:25 编辑

不可以
FOR内不能有标签
并且标签不可以有变量组成
友情提示:ERRORLEVEL跳转的时候建议从大到小判断
其他:收到你的启发,可以试试直接
  1. goto setIP%errorlevel%
复制代码

作者: 20024jok    时间: 2017-6-17 20:10

果然是声明的问题啊,非常感谢!




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