2016-09-06 55 views
-1

我需要从注册表项中提取某些数据并将此数据输出到单独文件,以便我可以调用另一个外部程序在输出上执行功能。我想下 HKLM \ SYSTEM \ ControlSet001 \枚举\ USBSTOR(未知名称)(序列号) 然后我需要它来提取友好名称值要做到这一点对所有的注册表项。当名称未知时从注册表键中提取特定数据(USBSTOR)

我需要它做一次这个键,然后发送序号友好名称分离.txt文件的各个按键使得最终的输出看起来像 -

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

50E549C6952EB1A00000002E & 0Next金士顿DataTraveler 2.0 USB设备(2.txt)

在目前我使用的 -

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

这将列出所有的按键为 -

HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \枚举\ USBSTOR \磁盘& Ven_Kingston & Prod_DataTraveler_2.0 & Rev_1100 \ 50E549C6952EB1A00000002E 的FriendlyName REG_SZ金士顿DataTraveler 2.0 USB Device

HKEY_LOCAL_MACHINE \ System \ ControlSet001 \ Enum \ USBSTOR \ Disk & Ven_Kingston & Prod_DT 4000_G2 & Rev_PMAP \ 001E0BB89D74BF4160004514 的FriendlyName REG_SZ金士顿DT4000 G2 USB设备

香港专业教育学院尝试了FOR/F环和其他地方的研究,但不管我怎么努力我无法得到它的工作。

任何建议非常感谢。

+0

请出示您已经尝试了什么! [编辑](http://stackoverflow.com/posts/39358008/edit)你的问题,并在那里发布代码! – aschipfl

回答

0

您还没有提供有关应该在输出上执行功能的外部程序的信息。您还没有提供您尝试过的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