在名称未知时从注册表项中提取特定数据 (USBSTOR)

Posted

技术标签:

【中文标题】在名称未知时从注册表项中提取特定数据 (USBSTOR)【英文标题】:Extracting specific Data from a registry key when the name is unknown (USBSTOR) 【发布时间】:2016-09-06 21:19:19 【问题描述】:

我需要从注册表项中提取某些数据并将这些数据输出到单独的文件中,以便我可以调用另一个外部程序来对输出执行功能。我想对下的所有注册表项执行此操作 HKLM\System\ControlSet001\Enum\USBSTOR(未知名称)(序列号) 然后我需要它来提取 Friendly Name 值。

我需要它一次执行一个键,然后将 序列号友好名称 发送到每个键的单独 .txt 文件中,以便最终输出看起来像 -

001E0BB89D74BF4160004514&0 金士顿 DT4000 G2 USB 设备(存储在 1.txt 中)

50E549C6952EB1A00000002E&0Next Kingston DataTraveler 2.0 USB 设备 (2.txt)

目前我正在使用 -

Reg query HKLM\System\ControlSet001\Enum\USBSTOR /s /v FriendlyName>>%~dp0Report.txt

这会将所有键列为 -

HKEY_LOCAL_MACHINE\System\ControlSet001\Enum\USBSTOR\Disk&Ven_Kingston&Prod_DataTraveler_2.0&Rev_1100\50E549C6952EB1A00000002E&0 FriendlyName REG_SZ 金士顿 DataTraveler 2.0 USB 设备

HKEY_LOCAL_MACHINE\System\ControlSet001\Enum\USBSTOR\Disk&Ven_Kingston&Prod_DT4000_G2&Rev_PMAP\001E0BB89D74BF4160004514&0 FriendlyName REG_SZ 金士顿 DT4000 G2 USB 设备

我尝试了 for /f 循环并在其他地方进行了研究,但无论我尝试什么,我都无法让它工作。

非常感谢任何建议。

【问题讨论】:

请展示您的尝试! Edit你的问题并在那里发布代码! 【参考方案1】:

您没有提供有关应该在输出上执行功能的外部程序的信息。您也没有提供您尝试过的 for 循环。 因此,我将提供一个示例脚本,它可能会将您推向正确的方向,(这将写入旁边的单个文件)

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
For /F "Delims==" %%A In ('Set USB[ 2^>Nul') Do Set "%%A="
Set "n=101"
For /F "EOL=E Tokens=1,2*" %%A In (
    'Reg Query HKLM\System\ControlSet001\Enum\USBSTOR /S /V FriendlyName') Do (
    If "%%~nA" NEq "%%~A" (Call Set "USB[%%n:*1=%%]=%%~nA") Else (
        Call Call Set "USB[%%n:*1=%%]=%%%%USB[%%n:*1=%%]%%%% %%C"
        Set/A n+=1))
If %n% NEq 101 (>"%~dp0AllUSBs.log" 2>Nul Set USB[)
EndLocal
Exit/B

【讨论】:

以上是关于在名称未知时从注册表项中提取特定数据 (USBSTOR)的主要内容,如果未能解决你的问题,请参考以下文章

Excel的现值函数都有哪些(名称和功能 )?

如何从合法的未知值类型中提取标准注册表值类型?

在选择时从数据库中获取值 在jsp中

使用 REGEX_EXTRACT 从重复项中提取一个值而不是另一个值

office插件安装完成后com加载项中vsto文件不加载

提取多条记录时从 plsql 脚本生成空 jpg 文件的原因可能是啥