标题: [网络工具] 批处理实现停用、启用本地连接 [打印本页]
作者: Batcher 时间: 2009-3-24 20:01 标题: 批处理实现停用、启用本地连接
【方案一】netsh命令
适用于Win2003,把Win2003的ifmon.dll拷贝到WinXP以后WinXP也可以用。
批处理自动获取本地连接的名称:http://bbs.bathome.net/thread-1689-1-1.html- @echo off
- set /p NetConf=请输入你选择的操作(禁用网卡为N,启用为Y):
- if /i "%NetConf%" equ "Y" (
- netsh interface set interface name="本地连接" admin=ENABLED
- )else if /i "%NetConf%" equ "N" (
- netsh interface set interface name="本地连接" admin=DISABLED
- ) else (
- goto :eof
- )
复制代码
【方案二】第三方命令行工具devcon.exe
devcon.exe下载地址:http://bbs.bathome.net/thread-1731-1-1.html- @echo off
- set /p NetConf=请输入你选择的操作(禁用网卡为N,启用为Y):
- if /i "%NetConf%" equ "Y" (
- set NetConf=ENABLE
- )else if /i "%NetConf%" equ "N" (
- set NetConf=DISABLE
- ) else (
- goto :eof
- )
- for /f "tokens=2 delims=&" %%a in ('devcon find pci\*^|findstr /c:"Fast Ethernet"') do (
- devcon %NetConf% *%%a*>NUL
- )
复制代码
【方案三】VBS
XP下可以用VBS来实现停用、启用本地连接- Const ssfCONTROLS = 3
- sConnectionName = "本地连接" '可改成需要控制的连接名称,如"无线网络连接"等
- sEnableVerb = "启用(&A)"
- sDisableVerb = "停用(&B)" 非xp 系统可能 是禁用
- set shellApp = createobject("shell.application")
- set oControlPanel = shellApp.Namespace(ssfCONTROLS)
- set oNetConnections = nothing
- for each folderitem in oControlPanel.items
- if folderitem.name = "网络连接" then
- set oNetConnections = folderitem.getfolder: exit for
- end if
- next
- if oNetConnections is nothing then
- msgbox "未找到网络连接文件夹"
- wscript.quit
- end if
- set oLanConnection = nothing
- for each folderitem in oNetConnections.items
- if lcase(folderitem.name) = lcase(sConnectionName) then
- set oLanConnection = folderitem: exit for
- end if
- next
- if oLanConnection is nothing then
- msgbox "未找到 '" & sConnectionName & "' item"
- wscript.quit
- end if
- bEnabled = true
- set oEnableVerb = nothing
- set oDisableVerb = nothing
- s = "Verbs: " & vbcrlf
- for each verb in oLanConnection.verbs
- s = s & vbcrlf & verb.name
- if verb.name = sEnableVerb then
- set oEnableVerb = verb
- bEnabled = false
- end if
- if verb.name = sDisableVerb then
- set oDisableVerb = verb
- end if
- next
- 'debugging displays left just in case...
- '
- 'msgbox s ': wscript.quit
- 'msgbox "Enabled: " & bEnabled ': wscript.quit
- 'not sure why, but invokeverb always seemed to work
- 'for enable but not disable.
- '
- 'saving a reference to the appropriate verb object
- 'and calling the DoIt method always seems to work.
- '
- if bEnabled then
- ' oLanConnection.invokeverb sDisableVerb
- oDisableVerb.DoIt
- else
- ' oLanConnection.invokeverb sEnableVerb
- oEnableVerb.DoIt
- end if
- 'adjust the sleep duration below as needed...
- '
- 'if you let the oLanConnection go out of scope
- 'and be destroyed too soon, the action of the verb
- 'may not take...
- '
- wscript.sleep 400
复制代码
作者: temp 时间: 2009-12-15 16:19
先顶上去,下班后好找
曾测试过方案一类似的方法,好像无效
我自制了类似方案二的批,效果不错,但不如楼主的通用(俺是手工找出来的,在别的电脑中不能用)
作者: temp 时间: 2009-12-15 20:50
谢谢!非常好用
难怪我测试方案一很久都没成功,原来是因为在XP环境下测试的,缺少ifmon.dll
作者: temp 时间: 2009-12-15 21:01
太棒了,方案二也很好用
当初我用
netsh interface set interface name="本地连接" admin=ENABLED 后不知是什么原因,弄的"本地连接"无法启用或禁用,只能从设备管理器中操作或用devcon disable *DEV_3065*
[ 本帖最后由 temp 于 2009-12-15 21:17 编辑 ]
作者: wps999 时间: 2010-4-12 17:48
我的是XP系统,试过三种方案,都无效。
作者: GNU 时间: 2010-4-12 18:58 标题: 回复 5楼 的帖子
说明你试的方法不对。
作者: x9tiancmd 时间: 2010-4-12 19:34
原帖由 wps999 于 2010-4-12 17:48 发表
我的是XP系统,试过三种方案,都无效。
你XP 是最高管理权限 运行的 批处理不?
作者: x9tiancmd 时间: 2010-4-12 19:47
原帖由 Batcher 于 2009-3-24 20:01 发表
【方案二】
for /f "tokens=2 delims=&" %%a in ('devcon find pci\*^|findstr /c:"Fast Ethernet"') do (
devcon %NetConf% *%%a*>NUL
老兄, 你丢了 find /i 参数了,
我试了下, 要 devcon find /i pci\*^|findstr /c:"Fast Ethernet" 才有效
[ 本帖最后由 x9tiancmd 于 2010-4-12 19:51 编辑 ]
作者: ynkm0871 时间: 2010-4-29 11:06
这个学习了的啦,感谢并支持!
作者: chuxian03 时间: 2010-5-13 14:01
学习了,,顶下。。。
作者: Batcher 时间: 2010-9-14 13:53 标题: 回复 11楼 的帖子
用devcon.exe吧
作者: web 时间: 2012-10-16 22:19
本地被占用 无法停用 怎么处理
作者: lqh123108 时间: 2013-3-8 13:28
回复 1# Batcher
方案三启用行的,但无法停用,是什么原因???
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |