无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3884|回复: 6
打印 上一主题 下一主题

循环检测的批处理 运行失败。

[复制链接]
跳转到指定楼层
1#
发表于 2017-12-16 16:23:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 icevan 于 2017-12-16 16:29 编辑
  1. :netstatus
  2. for /f "tokens=1,2 delims=:" %%a in ('ipconfig') do (
  3.      if "%%a" equ "以太网适配器 本地连接" set "flag=a"
  4.      if defined flag set /a n+=1
  5.      if !n! equ 6 set "ip=%%b"
  6. )
  7. set Gateway=%ip:~1%
  8. if "%Gateway%"=="" (
  9.         echo.
  10.         echo 连接失败.等待5秒后重试.
  11.         timeout 5 /nobreak >nul       
  12.         goto netstatus
  13. )
复制代码


对这个变量始终搞不清楚。
2#
发表于 2017-12-16 21:10:18 | 只看该作者
这是批处理局部程序是吧!?否则05行的 !n!不对了!
回复

使用道具 举报

3#
发表于 2017-12-16 21:59:13 | 只看该作者
在循环前初始化n为0,清空flag定义。

:netstatus
set /a n=0
set flag=

for /f "tokens=1,2 delims=:" %%a in ('ipconfig') do (
   ...
)

点评

谢谢 高手指点。 晓得问题出在哪里了。 就是循环的时候变量n没有清空, 造成if后面的赋值命令始终没有执行。 太感谢了。  详情 回复 发表于 2017-12-16 22:27
回复

使用道具 举报

4#
 楼主| 发表于 2017-12-16 22:27:39 | 只看该作者
slore 发表于 2017-12-16 21:59
在循环前初始化n为0,清空flag定义。

:netstatus

谢谢 高手指点。
晓得问题出在哪里了。
就是循环的时候变量n没有清空,
造成if后面的赋值命令始终没有执行。
太感谢了。
回复

使用道具 举报

5#
 楼主| 发表于 2017-12-16 23:02:45 | 只看该作者
  1. :netstatus
  2. set flag=
  3. for /f "tokens=1,2 delims=:" %%a in ('ipconfig') do (
  4.         if "%%a" equ "以太网适配器 本地连接" set "flag=1"
  5.         if "!flag!"=="1" (if "%%a"=="   默认网关. . . . . . . . . . . . . " set "Gateway=%%b")
  6. )
  7.          
  8. if "%Gateway%"==" " (
  9.         echo.
  10.         echo 连接失败.等待5秒后重试......
  11.         timeout 5 /nobreak >nul
  12.         goto netstatus
  13. )
复制代码


搞定了。没有用获取固定行数的内容的方法,
因为命令回显的行数不固定。
微软也是故意折腾,不同版本的命令回显都不一样。

点评

只是查网关信息?那直接用ipconfig |find "网关地址" 来查不更简单些么?  详情 回复 发表于 2017-12-17 13:42
回复

使用道具 举报

6#
发表于 2017-12-17 13:42:02 | 只看该作者
icevan 发表于 2017-12-16 23:02
搞定了。没有用获取固定行数的内容的方法,
因为命令回显的行数不固定。
微软也是故意折腾,不同版本 ...

只是查网关信息?那直接用ipconfig |find "网关地址" 来查不更简单些么?

点评

如果有多个网卡呢?用find只能得到最后一个连接的网关地址。 这里我需要的是网关地址。 其他地方可以改成获取别的信息。  详情 回复 发表于 2017-12-17 14:54
回复

使用道具 举报

7#
 楼主| 发表于 2017-12-17 14:54:57 | 只看该作者
kingshui 发表于 2017-12-17 13:42
只是查网关信息?那直接用ipconfig |find "网关地址" 来查不更简单些么?

如果有多个网卡呢?用find只能得到最后一个连接的网关地址。
这里我需要的是网关地址。
其他地方可以改成获取别的信息。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-30 19:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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