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

[其他] 求助,能否在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
复制代码
新人一枚,请高手们指点

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

TOP

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

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

评分人数

TOP

不可以。
请把它放到for循环外面。
1

评分人数

测试代码之前请做好备份

TOP

标签是脚本预处理的时候做的
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

返回列表