You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写批处理脚本实现网卡的一键启用/禁用(根据当前状态自动切换)

如何编写批处理脚本实现网卡的一键启用/禁用(根据当前状态自动切换)

我懂你想要的是那种能自动识别网卡当前状态,一键切换启用/禁用的批处理脚本——之前试的两个脚本要么只启用不禁用,要么判断逻辑出问题,确实挺闹心的。我来帮你排查问题,给你调整好能用的版本。

首先看你第一个用wmic的脚本,问题出在判断条件上:你用FormFactor|find "2"来判断状态,但FormFactor=2其实是指设备的外形类型(比如PCI卡),和网卡是否启用完全没关系,这就导致你的判断逻辑从根上错了,自然没法正确切换禁用状态。

修正后的WMIC版本脚本

直接查询网卡的Enabled属性来判断状态,这才是正确的姿势:

@echo off
set "nicName=Realtek Gaming GbE Family Controller"

:: 查询网卡是否已启用
wmic path Win32_NetworkAdapter where "Name='%nicName%'" get Enabled | find "True" >nul && goto :disable || goto :enable

:disable
echo 正在禁用网卡...
wmic path Win32_NetworkAdapter where "Name='%nicName%'" call Disable
goto :eof

:enable
echo 正在启用网卡...
wmic path Win32_NetworkAdapter where "Name='%nicName%'" call Enable
goto :eof

说明:这里直接检查Win32_NetworkAdapter的Enabled属性,True表示已启用,False表示禁用,判断逻辑就准确了。

再看你第二个用devcon的脚本,问题出在for /f提取状态的方式上:当网卡启用时,devcon status *DEV_8168的输出格式可能和你预期的不一样,导致tokens=3抓不到“running”这个值,自然没法触发禁用逻辑。

修正后的DEVCON版本脚本

换一种方式判断状态,直接用findstr匹配输出里的关键词:

@echo off
set "devID=*DEV_8168"

:: 检查设备是否处于运行状态
devcon status %devID% | findstr /i "running" >nul && goto :disable

:: 走到这里说明设备是禁用状态,执行启用
echo 正在启用网卡...
devcon enable %devID%
goto :eof

:disable
echo 正在禁用网卡...
devcon disable %devID%
goto :eof

说明:用findstr /i "running"来检查输出里是否包含“running”(忽略大小写),如果有就说明已启用,执行禁用;否则执行启用,这样就避开了提取tokens的坑。

最后提醒一下:不管用哪个脚本,都需要以管理员身份运行,否则会有权限问题导致操作失败哦。

备注:内容来源于stack exchange,提问作者user2048695

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:49:39