Board logo

标题: [系统相关] 批处理如何判断当前是自动ip还是固定ip? [打印本页]

作者: tedking2012    时间: 2011-9-18 14:02     标题: 批处理如何判断当前是自动ip还是固定ip?

如题
我想写一个能判断当前的ip配置状态的批处理
但是想来想去我想到用提前设置变量的方法做判断,但是过于冗余;
大家有没有好的方法?
作者: Batcher    时间: 2011-9-18 14:16

你是怎样提前设置变量的?
作者: ArdentMan    时间: 2011-9-18 14:27

  1. @Echo Off
  2. Set "是=自动"&Set "否=固定"
  3. For /F "tokens=3" %%a In ('Netsh InterFace IP Show Address^|Findstr "DHCP"') Do Call,Echo %%%%a%%IP
  4. Pause>Nul
复制代码

作者: tedking2012    时间: 2011-9-18 14:29

我的想法类似这样
set var=此处照抄net wlan show autoconfig的信息

然后每次设置的时候判断net wlan show autoconfig 返回的数值和已经设置的变量是否相同

-----------------------------------------------------------------------------------------------------

或者set var =1

然后在固定ip中设置set var=1  在自动ip中设置set var=0
提前运行一次,然后每次都判断var的数值,如果是1就是固定ip,如果是0就是自动ip,然后采取相应的动作


--------------------------------------------------
但是无论哪种方法,都不怎么简洁利索,实在是不符合批处理的风格。
作者: ArdentMan    时间: 2011-9-18 14:35

  1. @Echo Off
  2. Netsh InterFace IP Show Address|Findstr "是"'>Nul&&Echo 自动IP||Echo 固定IP
  3. Pause>Nul
复制代码

作者: tedking2012    时间: 2011-9-18 14:39

回复 5# ArdentMan


    good idea!一个计算机中有很多网络比如虚拟接口,蓝牙等等,findstr是否可以接多个条件?
作者: ArdentMan    时间: 2011-9-18 14:46

回复 6# tedking2012
Findstr表示没有太大鸭梨,
但是具体问题要具体分析
楼主最好是将本机上Netsh InterFace IP Show Address的信息贴出来
作者: tedking2012    时间: 2011-9-18 14:52

回复 7# ArdentMan


    恐怕问题还没有结束,因为需要的是无线网卡的状态,其它的都得排除,或许应该换一个netsh条件,缩小到无线网卡的信息
作者: ArdentMan    时间: 2011-9-18 15:00

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. Set "是=自动"&Set "否=固定"
  3. For /F "delims=" %%a In ('Netsh InterFace IP Show Address') Do (
  4.   If Defined Flag For /F "tokens=3" %%b In ("%%a") Do Echo !%%b!&Goto Next
  5.   Set "Str=%%a"
  6.   If "!Str:无线网络连接=!" NEQ "!Str!" Set "Flag=a"
  7. )
  8. :Next
  9. Pause>Nul
复制代码

作者: tedking2012    时间: 2011-9-18 15:07

回复 9# ArdentMan


    回到了设置变量然后比较的思路了,感谢热心的ArdentMan!
暂时先这样用着,希望有人能做出来更简洁的方法!
作者: ArdentMan    时间: 2011-9-18 15:19

本帖最后由 ArdentMan 于 2011-9-18 15:25 编辑

回复 10# tedking2012


    本机(XP SP3)上不能运行Netsh Wlan Show Settings(VISITA或WIN 7系统才有),请楼主将你本机上这个命令的信息贴出来
作者: fastslz    时间: 2011-9-19 09:43

回复 8# tedking2012
节约使用论坛空间,复制 cmd输出内容就可以了
  1. @Echo Off
  2. For /F "delims=" %%a In ('
  3. wmic path Win32_NetworkAdapterConfiguration Where "IPEnabled='TRUE'" Get DHCPEnabled^,IPAddress/Value
  4. ') Do set %%a>nul
  5. If "%DHCPEnabled%"=="TRUE" (echo 自动IP: %IPAddress%) else echo 固定IP: %IPAddress%
  6. Pause
复制代码
说明
wmic path Win32_NetworkAdapterConfiguration Where "IPEnabled='TRUE'"输出已经激活的连接其它连接直接被忽略,所以判断DHCPEnabled是否为TRUE就可以得出自动IP还是固定IP





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