首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用wmic命令仅从该输出中获取DeviceID

如何使用wmic命令仅从该输出中获取DeviceID
EN

Stack Overflow用户
提问于 2017-11-02 17:04:15
回答 1查看 2.8K关注 0票数 1

我正在写一个批处理脚本,在其中我必须获得当前连接到windows的usb设备。我使用了这个命令

代码语言:javascript
复制
C:\Users\Virima>wmic path win32_usbcontrollerdevice get Dependent /format:list

它的输出是

代码语言:javascript
复制
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\ROOT_HUB20\4&2851D18A&0""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_8087&PID_0020\5&15BBD570&0&1""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_0781&PID_5567\4C530001030509109324""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USBSTOR\DISK&VEN_SANDISK&PROD_CRUZER_BLADE&REV_1.00\4C530001030509109324&0""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\ROOT_HUB20\4&1C1548F&0""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_8087&PID_0020\5&29432BF7&0&1""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_147E&PID_2016\6&32FEB3AB&0&3""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_0A5C&PID_217F\70F3953D7812""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="BTH\MS_RFCOMM\7&1FB43662&0&0""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="BTH\MS_BTHBRB\7&1FB43662&0&1""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="BTH\MS_BTHPAN\7&1FB43662&0&2""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_04CA&PID_0061\6&32FEB3AB&0&2""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="HID\VID_04CA&PID_0061\7&B449ECA&0&0000""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_046D&PID_C534\6&32FEB3AB&0&1""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_046D&PID_C534&MI_00\7&1501E46C&0&0000""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="HID\VID_046D&PID_C534&MI_00\8&F640D64&0&0000""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_046D&PID_C534&MI_01\7&1501E46C&0&0001""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="HID\VID_046D&PID_C534&MI_01&COL01\8&1473305E&0&0000""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="HID\VID_046D&PID_C534&MI_01&COL02\8&1473305E&0&0001""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="HID\VID_046D&PID_C534&MI_01&COL03\8&1473305E&0&0002""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="HID\VID_046D&PID_C534&MI_01&COL04\8&1473305E&0&0003""
Dependent="\\VIRIMA-009\root\cimv2:Win32_PnPEntity.DeviceID="HID\VID_046D&PID_C534&MI_01&COL05\8&1473305E&0&0004""

我只想从输出中提取DeviceID并在注册表搜索中使用。我打算这样做

代码语言:javascript
复制
`REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\$DeviceID`

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-03-12 04:07:20

TL;DR:

for /f tokens^=2^ delims^=^" %A in ('wmic path win32_usbcontrollerdevice get Dependent') do @REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\%A"

详细信息:

WMIC.exe命令可以获得您想要的内容。

wmic path win32_usbcontrollerdevice get Dependent

这里真正的挑战是,当delims参数已经用dbl-引号封装时,如何告诉FOR在dbl-引号字符处进行分隔。

FOR希望传递给它的第二个参数包含任何“定界符”、“标记”和“跳过”指令,并用双引号括起来,从而有效地使这三个指令成为单个参数。我们可以通过转义集合中的每个空格和特殊字符来创建没有dbl-quotes的相同效果-转义字符是插入符号( {^}字符)。转义就位后,并告诉for在dbl-quotes处切换/定界行,我们就可以开始截取WMIC.exe输出了。

for /f tokens^=2^ delims^=^" %A in ('wmic path win32_usbcontrollerdevice get Dependent') do @echo %A

现在只需将“HKLM”信息与您提到的REG QUERY命令混合在一起,我们就有了一个功能齐全的调用。

for /f tokens^=2^ delims^=^" %A in ('wmic path win32_usbcontrollerdevice get Dependent') do @REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\%A"

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47071264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档