标题: [系统相关] 批处理如何判断当前是自动ip还是固定ip? [打印本页]
作者: tedking2012 时间: 2011-9-18 14:02 标题: 批处理如何判断当前是自动ip还是固定ip?
如题
我想写一个能判断当前的ip配置状态的批处理
但是想来想去我想到用提前设置变量的方法做判断,但是过于冗余;
大家有没有好的方法?
作者: Batcher 时间: 2011-9-18 14:16
你是怎样提前设置变量的?
作者: ArdentMan 时间: 2011-9-18 14:27
- @Echo Off
- Set "是=自动"&Set "否=固定"
- For /F "tokens=3" %%a In ('Netsh InterFace IP Show Address^|Findstr "DHCP"') Do Call,Echo %%%%a%%IP
- 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
- @Echo Off
- Netsh InterFace IP Show Address|Findstr "是"'>Nul&&Echo 自动IP||Echo 固定IP
- 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
- @Echo Off&SetLocal EnableDelayedExpansion
- Set "是=自动"&Set "否=固定"
- For /F "delims=" %%a In ('Netsh InterFace IP Show Address') Do (
- If Defined Flag For /F "tokens=3" %%b In ("%%a") Do Echo !%%b!&Goto Next
- Set "Str=%%a"
- If "!Str:无线网络连接=!" NEQ "!Str!" Set "Flag=a"
- )
- :Next
- 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输出内容就可以了- @Echo Off
- For /F "delims=" %%a In ('
- wmic path Win32_NetworkAdapterConfiguration Where "IPEnabled='TRUE'" Get DHCPEnabled^,IPAddress/Value
- ') Do set %%a>nul
- If "%DHCPEnabled%"=="TRUE" (echo 自动IP: %IPAddress%) else echo 固定IP: %IPAddress%
- Pause
复制代码
说明
wmic path Win32_NetworkAdapterConfiguration Where "IPEnabled='TRUE'"输出已经激活的连接其它连接直接被忽略,所以判断DHCPEnabled是否为TRUE就可以得出自动IP还是固定IP
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |