[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理如何判断当前是自动ip还是固定ip?

如题
我想写一个能判断当前的ip配置状态的批处理
但是想来想去我想到用提前设置变量的方法做判断,但是过于冗余;
大家有没有好的方法?

你是怎样提前设置变量的?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  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
复制代码
一路飘过的鸟~~~

TOP

我的想法类似这样
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,然后采取相应的动作


--------------------------------------------------
但是无论哪种方法,都不怎么简洁利索,实在是不符合批处理的风格。

TOP

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

TOP

回复 5# ArdentMan


    good idea!一个计算机中有很多网络比如虚拟接口,蓝牙等等,findstr是否可以接多个条件?

TOP

回复 6# tedking2012
Findstr表示没有太大鸭梨,
但是具体问题要具体分析
楼主最好是将本机上Netsh InterFace IP Show Address的信息贴出来
一路飘过的鸟~~~

TOP

回复 7# ArdentMan


    恐怕问题还没有结束,因为需要的是无线网卡的状态,其它的都得排除,或许应该换一个netsh条件,缩小到无线网卡的信息

TOP

  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
复制代码
一路飘过的鸟~~~

TOP

回复 9# ArdentMan


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

TOP

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

回复 10# tedking2012


    本机(XP SP3)上不能运行Netsh Wlan Show Settings(VISITA或WIN 7系统才有),请楼主将你本机上这个命令的信息贴出来
一路飘过的鸟~~~

TOP

回复 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

TOP

返回列表