(已解决)如何在一个批处理文件中启用和禁用设备

(已解决)如何在一个批处理文件中启用和禁用设备

我想要一个根据网卡状态启用/禁用网卡的快捷方式。我找到了如何使用 devcon、wmic 和 pnputil 来启用或禁用它,或者在这里找到了一些问答,它们建议使用包含条件代码的脚本,但它们都不适合我……我做到的最好的方法是在禁用时启用它,但脚本不会在启用时禁用它……

这是启用但不禁用的脚本之一:

@echo off 

wmic path Win32_PnPEntity get FormFactor|find "2" >nul && goto :disable || goto :enable
goto :eof
:disable
  wmic Path Win32_PnPEntity Where "Name='Realtek Gaming GbE Family Controller'" Call Disable
  goto :eof
:enable
  wmic Path Win32_PnPEntity Where "Name='Realtek Gaming GbE Family Controller'" Call enable
  goto :eof

这是另一个

@echo off 

for /f "tokens=3" %%a in ('devcon status *DEV_8168^|find "Device is"') do set "status=%%a"
echo status is %status%


IF "%status%" == "running" (
  devcon disable *DEV_8168
) ELSE (
  devcon enable *DEV_8168
)

最后一个给了我一种线索,当设备被禁用时,状态查询 echo %status% 返回“已禁用”,但当设备被启用时,它不返回任何内容,而是返回“正在运行”,我相信这才是它应该返回的

答案1

解决了。​​感谢 io-oi 的回复,我有一个可用的脚本


@echo off & setlocal

pushd %__AppDir__% && 2>nul =;(
    reg.exe query HKCU\Environment /d /e /f on|find.exe /i "Click" >nul && =;(
       netsh.exe interface set interface name="Ethernet" admin=Disabled
       netsh.exe interface set interface name="WiFi" admin=Enabled 
       setx.exe Click off >nul & endlocal & goto :eof                  );= || =;( 
       netsh.exe interface set interface name="Ethernet" admin=Enabled
       netsh.exe interface set interface name="WiFi" admin=Disabled 
       setx.exe Click on 1>nul & endlocal & goto :eof                  );= );=
  

相关内容