首页 > 代码库 > 使用devcon工具,结合批处理重启无线网卡设备

使用devcon工具,结合批处理重启无线网卡设备

     最近由于工作需要,写了一个重启无线网卡的批处理。

    首先说一下我的思路:

     1、 ping网关(默认选项,网关为192.168.1.1)两次,如果成功,则批处理结束

     2、 如果不成功,则在第二次,重启无线网卡

     为了达到以上目的。我需要一个可以在DOS命令中进行启用、禁用、重新启动、更新、删除和查询单个设备或一组设备的工具。而devcon恰恰就是windows中进行这些操作的工具。它并未集成在windows的默认安装中,为此,我们需要通过官网或者其他网站下载该工具。由于官方提供的工具在win7 64bit中无法正常工作,所以我推荐到以下网站下载:

 http://download.csdn.net/detail/zhangzxing/5691253

     下载好文件,并解压。devcon在3个文件中:amd64、i386、ia64 。将操作系统对应的版本复制到系统盘的system32目录下。按照思路,写成批处理:

 

@echo off

for /f %%y in (‘devcon find usb\* ^|find "MER"‘) do set WLID="@%%y"   

    ::抓取无线网卡的硬件ID,我使用的是水星,所以寻找包含“MER”.

    ::在%%y中加入引号,是为了将%%y的值当成一个整体的字符串来赋值。否则变量赋值会被截取

    :: 因为%%y中的值,被DOS识别成了系统路径,可能是包含了特殊符号&

    ::加上@的原因也是因为这个,将这个字符串当成一个整体来执行

    ::由于devcon程序对应的执行方式为,devcon restart  “@硬件ID” ,所以WLID变量值刚好符合条件

 

set /p Targie=<c:\ip.txt                      ::从文件中输入IP地址 

for %%i in (1,2) do (                          ::进行循环                                   

ping -w 1 %Targie% >c:\123.txt      ::网络测试           

 if %ERRORLEVEL%==0 (                             

       ::判断是否成功,ERRORLEVEL变量记录的是上一次程序执行的状态,0为成功,其他为失败

echo " %date% : %Targie% is comneted! “       ::程序执行成功,则输出日期和成功信息

       ) else (
if %%i==2 (
echo " NETWORK SERVICE RESTARTING...."
devcon restart %WLID%                  :: 如果ping不成功,且已进行了两次,则重启网卡     

 if %ERRORLEVEL%==0 (
echo "NETWORK SERVICE IS RESTARTED!"
    ) else (

echo "NETWORK SERVICE restart Fail"        ::判断网卡重启是否成功,以及对应的提示         

    ) else (
 echo Trying %%i time to comnetting %Targie%     ::如果ping不成功,.提示正在尝试连接网关1、2次
          )

          )
     )

 

 

出现的问题:

ping、devcon命令执行后,有时%ERRORLEVEL%返回的值会发生错误。

此问题,未解决。还在找寻更好的判断方式

 

 

另,devcon的详细介绍,请见百度百科)

    参数编辑

devcon.exe [-r] [-m:\\<machine>] <command> [<arg>...]

-r 如果指定它,在命令完成后若需要则重新启动计算机。

<machine> 是目标计算机的名称。

<command> 是将要执行的命令(如下所示)。

<arg>... 是命令需要的一个或多个参数。

要获取关于某一特定命令的帮助,请键入:devcon.exe help <command>

classfilter  允许修改类别筛选程序。

classes  列出所有设备安装类别。

disable  禁用与指定的硬件或实例 ID 匹配的设备。

driverfiles  列出针对设备安装的驱动程序文件。

drivernodes  列出设备的所有驱动程序节点。

enable 启用与指定的硬件或 实例 ID 匹配的设备。

find  查找与指定的硬件或 实例 ID 匹配的设备。

findall  查找设备,包括那些未显示的设备。

help  显示此信息。

hwids  列出设备的硬件 ID。

install  手动安装设备。

listclass  列出某一安装类别的所有设备。

reboot  重新启动本地计算机。

remove 删除与特定的硬件或 实例 ID 匹配的设备。

rescan  扫描以发现新的硬件。

resources 列出设备的硬件资源。

restart  重新启动与特定的硬件或 实例 ID 匹配的设备。

stack  列出预期的设备驱动程序堆栈。

status  列出设备的运行状态。

update 手动更新设备。

UpdateNI 手动更新设备,无用户提示

SetHwID  添加、删除和更改根枚举设备的硬件 ID 的顺序。

 

本文出自 “easou” 博客,请务必保留此出处http://242337.blog.51cto.com/232337/1605262

使用devcon工具,结合批处理重启无线网卡设备