Win7/Win10如何写脚本自动禁用/启用/重启设备管理器中的特定硬件设备(声卡等)


前言

最近声卡有点问题,每次启动电脑都要重启声卡(禁用再启用)才有声音,故自己写了个脚本自动重启设备。


一、工具选择

有多种工具可供我们来控制设备管理器的设备状态,根据情况自选即可。

1.选择之一:PnPUtil

该工具是win10自带,无需下载安装,也是我们的首选工具,其可以通过命令行对设备执行启用、禁用和重启(enable/disable/restart)等操作。

你可以用Win+R快捷键,输入cmd,然后在命令行里输入pnputil,如果正常的话会出现下面这些信息,代表你电脑已经有PnPUtil:
在这里插入图片描述
如果你不是Win10以上系统,你可以用devcon或DevmanView进行操作:

2.选择之一:Devcon

devcon也是较多教程用的方法,但是官网地devcon下载后文件大小很大,近1个G,感觉没必要,于是我在外网上找到了这样一篇教程:
https://stackoverflow.com/questions/47530182/enabling-disabling-a-device-in-windows-10-from-command-line
里面写了如何下载到6mb大小的devcon,下载地址如下:
https://superuser.com/questions/1002950/quick-method-to-install-devcon-exe

下载安装完后,你也可以用devcon直接进行enable/disable等操作了。

3.选择之一:DevmanView:

Win7可以使用DevmanView工具来用命令行控制设备管理器状态。
下面是外网写的比较详细的一篇教程:
https://superuser.com/questions/429016/enable-disable-windows-7-device-via-command-line/560454#560454

二、步骤

因为我的电脑是Win10,我就直接以系统自带的pnputil为例。

1.获取管理员权限

新建一个.bat文件,在文件开头写入以下两行代码:

%1 mshta vbscript:createobject("shell.application").shellexecute("%~s0","::","","runas",1)(window.close)&exit
cd /d %~dp0

该代码作用是让bat文件以管理员身份运行,不过运行的时候还需要自己手动点一下确定。

2.获取要进行操作的设备实例路径

设备管理器-属性-详细信息-设备实例路径-值。
该值用于脚本指明设备ID
在这里插入图片描述

2.用Win10自带工具pnputil进行设备重启

在bat文件后面继续加上这行代码:

pnputil /restart-device "HDAUDIO\FUNC_01&VEN_10EC&DEV_0256&SUBSYS_1B505809&REV_1000\4&375EFBD3&0&0001"

现在双击bat文件即可对设备进行重启。

3.代码总览

在这里插入图片描述

网上还有其他教程可以让该脚本开机自动启动,并且执行bat文件时不需要每次都点击确定授予管理员权限,根据需要自行添加。

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
### 回答1: 可以使用以下批处理脚本禁用/启用以太网:@echo offrem 以太网启用/禁用if "%1"=="-enable" ( netsh interface set interface "以太网" enabled ) else if "%1"=="-disable" ( netsh interface set interface "以太网" disabled )echo 以太网已%1 ### 回答2: 批处理脚本是一种用于自动化任务的脚本语言,可以在Windows操作系统执行。以下是一个用于一键禁用/启用以太网的批处理脚本示例: @echo off setlocal enabledelayedexpansion REM 获取当前以太网状态 for /f "tokens=2 delims=:" %%a in ('netsh interface show interface^|findstr /c:"以太网"') do ( set status=%%a ) REM 判断当前状态并进行相应操作 if "%status%"==" 已连接 " ( REM 禁用以太网 echo 禁用以太网... netsh interface set interface "以太网" admin=disable REM 延迟2秒等待操作生效 ping localhost -n 2 >nul REM 检查禁用状态 for /f "tokens=2 delims=:" %%a in ('netsh interface show interface^|findstr /c:"以太网"') do ( set new_status=%%a ) if "%new_status%"==" 已禁用 " ( echo 以太网已禁用。 ) else ( echo 无法禁用以太网。 ) ) else ( REM 启用以太网 echo 启用以太网... netsh interface set interface "以太网" admin=enable REM 延迟2秒等待操作生效 ping localhost -n 2 >nul REM 检查启用状态 for /f "tokens=2 delims=:" %%a in ('netsh interface show interface^|findstr /c:"以太网"') do ( set new_status=%%a ) if "%new_status%"==" 已连接 " ( echo 以太网已启用。 ) else ( echo 无法启用以太网。 ) ) endlocal exit 这段脚本首先通过netsh命令获取当前以太网的状态,然后根据状态进行相应的禁用启用操作。操作完成后,脚本会再次检查以太网的状态,以确保操作成功。脚本的延迟操作是为了等待禁用/启用操作生效。最后,脚本会输出相应的操作结果。 请注意,在运行此脚本前,请确保以管理员权限运行命令提示符窗口。此外,脚本的"以太网"是根据具体设备名称而定,可能需要根据实际情况进行调整。 ### 回答3: 以下是一个简单的批处理脚本,用于一键禁用/启用以太网: @echo off echo 请选择要执行的操作: echo [1] 禁用以太网 echo [2] 启用以太网 set /p option=请选择: if %option%==1 ( netsh interface set interface "以太网" admin=disable echo 以太网已禁用。 ) else if %option%==2 ( netsh interface set interface "以太网" admin=enable echo 以太网已启用。 ) else ( echo 无效的选项,请重新运行脚本。 ) 上述脚本通过使用netsh命令来控制以太网的启用/禁用状态。用户可以选择1来禁用以太网,选择2来启用以太网。脚本会根据用户的选择执行相应的命令,并显示操作结果。 请注意,脚本的"以太网"可能需要根据您的系统进行适当的更改。您可以通过在cmd运行"netsh interface show interface"命令来查看以太网接口的名称,并将其作为脚本"netsh interface set interface"命令的参数进行替换。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bartender_Jill

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值