找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25655|回复: 4

[其他] 求助,能否在for循环中生成子函数的声明和代码

[复制链接]
发表于 2017-6-16 11:47:58 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码
新人一枚,请高手们指点
发表于 2017-6-16 20:35:35 | 显示全部楼层
标签是脚本预处理的时候做的

评分

参与人数 1技术 +1 收起 理由
20024jok + 1 thx

查看全部评分

发表于 2017-6-16 21:14:28 | 显示全部楼层
不可以。
请把它放到for循环外面。

评分

参与人数 1技术 +1 收起 理由
20024jok + 1 thx

查看全部评分

发表于 2017-6-16 21:23:00 | 显示全部楼层
本帖最后由 老刘1号 于 2017-6-16 21:25 编辑

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

评分

参与人数 1技术 +1 收起 理由
20024jok + 1 thx

查看全部评分

 楼主| 发表于 2017-6-17 20:10:39 | 显示全部楼层
果然是声明的问题啊,非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 18:43 , Processed in 0.020183 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表