远在DOS操作系统时代,面对着黑底白字的屏幕,写写批处理命令玩玩觉得挺有意思。

如今,批处理文件还是能派上大用场,还是能为我们干很多意想不到的事情。

公司就有这么台烂服务器,作为打印服务器使用,但是这台机主板集成的网卡已损坏,只能使用USB无线网卡来上网,经常会碰到莫名其妙的不能上网,无法打印的情况,重新禁用再启用网卡就可以恢复正常。

有没有方法来实现其自动检查是否能上网,然后自动禁用再启用设备呢?

答案是肯定的,有这么个工具,它叫DevCon,可以对电脑所有设备进行操作,而且是微软官方提供,下载地址在http://support.microsoft.com/kb/311272/zh-cn ,具体用法请参考微软页面的介绍。

设备控制台帮助:

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 的顺序。

在这里我们只需用到其disable 与 enable 来对网络设备进行禁用与启用。
如何实现呢?

下载devcon.exe,解压后根据操作系统选择不同的文件夹中的文件。32位操作系统选择i386文件夹中的devcon.exe文件,将些文件复制到任意位置,例如,复制到C盘test目录。
有了devcon之后我们可以知道如何通过命令来禁用与启用网络设备。那如何知道网络不正常呢?这里要用到最常用的ping命令来获得网络的状态。将以下文本复制并新建为test.bat文件,也放在与devcon同样的c:\test目录,双击它运行即可。这样当网络正常时,能正确返回ping的结果,显示网络正常,而如果异常,则转至no标号通过devcon来执行禁用再启用网络设备的操作。然后弹出一个提示框,等待20秒后再尝试ping。如此反复,时刻监视你的网络情况。可将bat文件加入到启动项中或计划任务中来实现开机运行。

@echo off

:begin
ping www.baidu.com >nul 2>nul&&goto normal||goto error

:normal
@echo.
@echo ****网络一切正常! ****
@echo.
goto begin

:error
@echo **** 网络异常,正在尝试重启网络设备,请稍等…… ****
devcon disable =net
devcon enable =net

msg %username% /time:20 /v /w "网络异常,正在尝试重启网络设备,请稍等!"

echo %time% 重试Ping...

goto begin

如果不希望看到DOS命令行窗口,也可以利用VBScript在隐藏窗口中运行应用程序,将以下代码内容另存为test.vbs文件,运行此文件即可。

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c c:\renewip\renewip.bat",vbhide

好了,介绍完毕,善用批处理,解决小事情!

最后修改:2020 年 04 月 23 日
如果觉得我的文章对你有用,请随意赞赏