返回列表 发帖

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

【方案一】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
)COPY
【方案二】第三方命令行工具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
)COPY
【方案三】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 400COPY
1

评分人数

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

先顶上去,下班后好找

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

我自制了类似方案二的批,效果不错,但不如楼主的通用(俺是手工找出来的,在别的电脑中不能用)

TOP

谢谢!非常好用
难怪我测试方案一很久都没成功,原来是因为在XP环境下测试的,缺少ifmon.dll

TOP

太棒了,方案二也很好用

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

[ 本帖最后由 temp 于 2009-12-15 21:17 编辑 ]

TOP

我的是XP系统,试过三种方案,都无效。

TOP

回复 5楼 的帖子

说明你试的方法不对。

TOP

原帖由 wps999 于 2010-4-12 17:48 发表
我的是XP系统,试过三种方案,都无效。



  你XP  是最高管理权限  运行的 批处理不?
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

原帖由 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 编辑 ]
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

这个学习了的啦,感谢并支持!

TOP

学习了,,顶下。。。

TOP

回复 11楼 的帖子

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

TOP

本地被占用 无法停用 怎么处理

TOP

回复 1# Batcher


    方案三启用行的,但无法停用,是什么原因???

TOP

返回列表