Board logo

标题: [网络连接] 获取宽带连接的IP的批处理for语句是怎样工作的? [打印本页]

作者: cl27047    时间: 2011-9-27 14:18     标题: 获取宽带连接的IP的批处理for语句是怎样工作的?

在网上看到一段代码,用来显示本机IP地址的,如下:
  1. @echo off
  2. title 显示你的IP
  3. color F9
  4. ipconfig
  5. @echo -
  6. for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "Address"') do set ip=%%i
  7. @echo ==================[你的IP地址是:%ip%]===============
  8. @echo -
  9. Echo 请按任意键关闭窗口! &pause>NUL
复制代码
for /f "tokens=2 delims=:" %i in ('ipconfig^|findstr "Address"') do echo我用ipconfig命令的输出为:

Windows IP Configuration





Ethernet adapter 本地连接:



        Connection-specific DNS Suffix  . :

        IP Address. . . . . . . . . . . . : 192.168.1.9

        Subnet Mask . . . . . . . . . . . : 255.255.255.0

        Default Gateway . . . . . . . . . :



PPP adapter 宽带连接:



        Connection-specific DNS Suffix  . :

        IP Address. . . . . . . . . . . . : ***.228.160.237

        Subnet Mask . . . . . . . . . . . : 255.255.255.255

        Default Gateway . . . . . . . . . : ***.228.160.237


运行批处理后会显示我的宽带连接的IP。
想请教高手为什么用的tokens=2  tokens=2不是截取第二节的吗?宽带连接ip address好像没有在第二节上呀,望高手能详解,先谢过了!
还有,为什么最后还有一行:
for /f "tokens=2 delims=:" %i in ('ipconfig^|findstr "Address"') do echo

这句有作用的吗???
作者: 601997526    时间: 2011-9-27 15:23

在for语句中tokens=2截取第二节是没错的,但在这里同时也用了delims=:意为以冒号:作为分隔符截取第二节
如 IP Address. . . . . . . . . . . . : 192.168.1.9
以冒号为分隔符,第一节当是 IP Address. . . . . . . . . . . .
第二节为 192.168.1.9
至于最后那一句是多余的,在这里是没什么作用的
作者: cl27047    时间: 2011-9-27 15:33

在for语句中tokens=2截取第二节是没错的,但在这里同时也用了delims=:意为以冒号:作为分隔符截取第二节
如 ...
601997526 发表于 2011-9-27 15:23



    可是这段代码运行后会得到下面的外网的ip呀,那个ip应该不是属于第二节的呀???
作者: 601997526    时间: 2011-9-27 16:06

IP Address. . . . . . . . . . . . : 192.168.1.9
IP Address. . . . . . . . . . . . : ***.228.160.237
因为ipconfig|findstr "Address"这句是搜索包涵Address的行,而你这里却显示了两句包涵Address的行,这里自然是以最后的那句为准




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