![如何从 Windows 7 上的命令行删除所有 COM 端口?](https://linux22.com/image/1350298/%E5%A6%82%E4%BD%95%E4%BB%8E%20Windows%207%20%E4%B8%8A%E7%9A%84%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%88%A0%E9%99%A4%E6%89%80%E6%9C%89%20COM%20%E7%AB%AF%E5%8F%A3%EF%BC%9F.png)
我们有一台用于测试某些设备的计算机。每隔一段时间,测试人员就需要进入并移除已分配的 COM 端口,以便释放它们并从 1 开始。最近,他们一直将同一个 COM 端口分配给几个设备(大约 8 个同时连接),而且他们还需要更改测试代码以匹配操作系统分配的任何数字。
报告的问题是重复的数字,但我认为“每天必须检查 COM 端口并更新代码”多次也是一个问题。
在装置经理,如果我打开显示隐藏的设备,我会看到数百个!
从滚动条的大小可以看出列表非常大。我可以点击每个端口然后卸载,但逐个卸载太麻烦了,所以我要求提供命令行替代方案,这样我就可以编写一个脚本,当他们需要重置端口时,只需双击即可。
当然,如果有某种软件可以实现这一点,那么也很好。
答案1
移除活动的 USB 端口:
devcon /r remove @usb\*
删除活动的 LPT 和 COM 端口:
devcon /r remove =ports
查询所有COM和LPT端口:
devcon FindAll =Ports
查询活动的USB端口:
devcon status @usb\*
查询所有 USB 端口-不同的结果:
devcon findall @usb\*
devcon findall =USB
枚举所有设备:
devcon hwids * > hwids.txt
WDK 的一部分,Windows 驱动程序工具包版本 7.1.0。
旧版本 2003-01-29 不适用于 Windows 7(不能删除设备)。 devcon 旧版本 2003-01-29
替代方案 1-PnPUtil
备选方案 2 - 注册表项,在子项中搜索 USB 设备
不删除全部!
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI
例子:
reg delete "HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Seagate&Prod_USB_2.0_Cable&Rev_0148" /f
如果端口枚举devcon FindAll =Ports
- 删除此注册表项:|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ACPI
如果端口枚举devcon status @usb\*
- 删除此注册表项:|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
例子:
谢谢 geermc4!我测试了 devcon。在 Windows 驱动程序工具包版本上,它可以与 Windows 7 一起正常运行。
硬件配置文件只能在 Windows XP 上设置。我们无法在 Windows 7 上设置。这是设计使然...备份HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
...
答案2
我还需要测试数百台设备。但是我尝试使用命令行“devcon /r remove @usb*”和 devcon /r remove =ports”,但不起作用。我还下载了 WDK(不知道如何使用)。读完对话后我感到很困惑。@geermc4 和 @STTR,你能再解释一下你是怎么做的吗?