找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 43009|回复: 13

[网络工具] 批处理实现停用、启用本地连接

[复制链接]
发表于 2009-3-24 20:01:29 | 显示全部楼层 |阅读模式
【方案一】netsh命令
适用于Win2003,把Win2003的ifmon.dll拷贝到WinXP以后WinXP也可以用。
批处理自动获取本地连接的名称:http://bbs.bathome.net/thread-1689-1-1.html
  1. @echo off
  2. set /p NetConf=请输入你选择的操作(禁用网卡为N,启用为Y):
  3. if /i "%NetConf%" equ "Y" (
  4.   netsh interface set interface name="本地连接" admin=ENABLED
  5. )else if /i "%NetConf%" equ "N" (
  6.   netsh interface set interface name="本地连接" admin=DISABLED
  7. ) else (
  8.   goto :eof
  9. )
复制代码
【方案二】第三方命令行工具devcon.exe
devcon.exe下载地址:http://bbs.bathome.net/thread-1731-1-1.html
  1. @echo off
  2. set /p NetConf=请输入你选择的操作(禁用网卡为N,启用为Y):
  3. if /i "%NetConf%" equ "Y" (
  4.   set NetConf=ENABLE
  5. )else if /i "%NetConf%" equ "N" (
  6.   set NetConf=DISABLE
  7. ) else (
  8.   goto :eof
  9. )
  10. for /f "tokens=2 delims=&" %%a in ('devcon find pci\*^|findstr /c:"Fast Ethernet"') do (
  11.   devcon %NetConf% *%%a*>NUL
  12. )
复制代码
【方案三】VBS
XP下可以用VBS来实现停用、启用本地连接
  1. Const ssfCONTROLS = 3
  2. sConnectionName = "本地连接"  '可改成需要控制的连接名称,如"无线网络连接"等
  3. sEnableVerb = "启用(&A)"
  4. sDisableVerb = "停用(&B)"    非xp 系统可能 是禁用
  5. set shellApp = createobject("shell.application")
  6. set oControlPanel = shellApp.Namespace(ssfCONTROLS)
  7. set oNetConnections = nothing
  8. for each folderitem in oControlPanel.items
  9. if folderitem.name  = "网络连接" then
  10.    set oNetConnections = folderitem.getfolder: exit for
  11. end if
  12. next
  13. if oNetConnections is nothing then
  14. msgbox "未找到网络连接文件夹"
  15. wscript.quit
  16. end if
  17. set oLanConnection = nothing
  18. for each folderitem in oNetConnections.items
  19. if lcase(folderitem.name)  = lcase(sConnectionName) then
  20.    set oLanConnection = folderitem: exit for
  21. end if
  22. next
  23. if oLanConnection is nothing then
  24. msgbox "未找到 '" & sConnectionName & "' item"
  25. wscript.quit
  26. end if
  27. bEnabled = true
  28. set oEnableVerb = nothing
  29. set oDisableVerb = nothing
  30. s = "Verbs: " & vbcrlf
  31. for each verb in oLanConnection.verbs
  32. s = s & vbcrlf & verb.name
  33. if verb.name = sEnableVerb then
  34.    set oEnableVerb = verb
  35.    bEnabled = false
  36. end if
  37. if verb.name = sDisableVerb then
  38.    set oDisableVerb = verb
  39. end if
  40. next
  41. 'debugging displays left just in case...
  42. '
  43. 'msgbox s ': wscript.quit
  44. 'msgbox "Enabled: " & bEnabled ': wscript.quit
  45. 'not sure why, but invokeverb always seemed to work
  46. 'for enable but not disable.
  47. '
  48. 'saving a reference to the appropriate verb object
  49. 'and calling the DoIt method always seems to work.
  50. '
  51. if bEnabled then
  52. '  oLanConnection.invokeverb sDisableVerb
  53. oDisableVerb.DoIt
  54. else
  55. '  oLanConnection.invokeverb sEnableVerb
  56. oEnableVerb.DoIt
  57. end if
  58. 'adjust the sleep duration below as needed...
  59. '
  60. 'if you let the oLanConnection go out of scope
  61. 'and be destroyed too soon, the action of the verb
  62. 'may not take...
  63. '
  64. wscript.sleep 400
复制代码

评分

参与人数 1PB +5 收起 理由
x9tiancmd + 5 学习了

查看全部评分

发表于 2009-12-15 16:19:16 | 显示全部楼层
先顶上去,下班后好找

曾测试过方案一类似的方法,好像无效

我自制了类似方案二的批,效果不错,但不如楼主的通用(俺是手工找出来的,在别的电脑中不能用)
发表于 2009-12-15 20:50:01 | 显示全部楼层
谢谢!非常好用
难怪我测试方案一很久都没成功,原来是因为在XP环境下测试的,缺少ifmon.dll
发表于 2009-12-15 21:01:01 | 显示全部楼层
太棒了,方案二也很好用

当初我用
netsh interface set interface name="本地连接" admin=ENABLED 后不知是什么原因,弄的"本地连接"无法启用或禁用,只能从设备管理器中操作或用devcon disable *DEV_3065*

[ 本帖最后由 temp 于 2009-12-15 21:17 编辑 ]
发表于 2010-4-12 17:48:39 | 显示全部楼层
我的是XP系统,试过三种方案,都无效。
发表于 2010-4-12 18:58:48 | 显示全部楼层

回复 5楼 的帖子

说明你试的方法不对。
发表于 2010-4-12 19:34:47 | 显示全部楼层
原帖由 wps999 于 2010-4-12 17:48 发表
我的是XP系统,试过三种方案,都无效。



  你XP  是最高管理权限  运行的 批处理不?
发表于 2010-4-12 19:47:36 | 显示全部楼层
原帖由 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 编辑 ]
发表于 2010-4-29 11:06:04 | 显示全部楼层
这个学习了的啦,感谢并支持!
发表于 2010-5-13 14:01:27 | 显示全部楼层
学习了,,顶下。。。
 楼主| 发表于 2010-9-14 13:53:39 | 显示全部楼层

回复 11楼 的帖子

用devcon.exe吧
发表于 2012-10-16 22:19:48 | 显示全部楼层
本地被占用 无法停用 怎么处理
发表于 2013-3-8 13:28:59 | 显示全部楼层
回复 1# Batcher


    方案三启用行的,但无法停用,是什么原因???
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:00 , Processed in 0.023245 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表