首页 > 解决方案 > 将 reg 查询输出处理为单行

问题描述

我想以单行(每个键一个)格式从 Windows 注册表中获取一些详细信息。但是到目前为止我所尝试的给了我想要的细节,但是分成了 2/3 行,这使得后期处理变得更加困难。

这是在 Windows 10 上。

一种选择是查询注册表,因此我运行以下命令:

reg query hklm\system\currentcontrolset\enum /s /f "DeviceDesc"

这给了我以下格式的输出(片段):

HKEY_LOCAL_MACHINE\system\currentcontrolset\enum\HID\VID_1A2C&PID_2124&MI_01&Col02\7&2a45f711&0&0001
    DeviceDesc    REG_SZ    @input.inf,%hid_device_system_control%;HID-compliant system controller

HKEY_LOCAL_MACHINE\system\currentcontrolset\enum\HID\VID_1A2C&PID_2124&MI_01&Col02\8&9a82e8&0&0001
    DeviceDesc    REG_SZ    @input.inf,%hid_device_system_control%;HID-compliant system controller

HKEY_LOCAL_MACHINE\system\currentcontrolset\enum\HID\VID_2149&PID_2117&MI_00\7&1e3fba77&0&0000
    DeviceDesc    REG_SZ    @input.inf,%hid_device_touch_screen%;HID-compliant touch screen

HKEY_LOCAL_MACHINE\system\currentcontrolset\enum\HID\VID_2149&PID_2117&MI_01\7&316fd6b5&0&0000
    DeviceDesc    REG_SZ    @input.inf,%hid_device_vendor_defined_range%;HID-compliant vendor-defined device

HKEY_LOCAL_MACHINE\system\currentcontrolset\enum\HID\VID_24AE&PID_2003&MI_00\8&456ad84&0&0000
    DeviceDesc    REG_SZ    @keyboard.inf,%hid.keyboarddevice%;HID Keyboard Device

格式为:

BLANK LINE
HKEY_LOCAL.....
    DeviceDesc .....

我想要的是HKEY_LOCAL...andDeviceDesc出现在同一行输出文本上,以便我可以FIND/FINDSTR用来获取我感兴趣的设备的完整信息。

就目前的输出而言,我无法使用 DOS 命令将这两条信息放在一起。

有没有办法让 DeviceDesc 出现在同一行?

我可以为此编写一个 Java/C#,但这似乎有点矫枉过正。

标签: batch-fileregistry

解决方案


命令REG没有定义输出格式的选项。

FOR循环可用于连接注册表项和设备描述字符串值以在一行上输出。接下来可以使用命令FINDSTR过滤FOR循环的整个输出以获取感兴趣的设备描述:

@echo off
setlocal EnableExtensions EnableDelayedExpansion
(for /F "tokens=1,2*" %%A in ('%SystemRoot%\System32\reg.exe query HKLM\System\CurrentControlSet\enum /s /f "DeviceDesc"') do if /I not "%%A" == "DeviceDesc" (set "RegKey=%%A") else echo !RegKey!    %%C) | %SystemRoot%\System32\findstr.exe /I /L /C:"HID-compliant touch screen"
endlocal

请注意,!由于启用了延迟的环境变量扩展,此批处理代码无法正确处理包含一个或多个的注册表项或描述值。

有四个空格用于将注册表项与设备描述分开。当然也可以使用例如水平制表符。

要了解所使用的命令及其工作原理,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读每个命令显示的所有帮助页面。

  • echo /?
  • endlocal /?
  • findstr /?
  • reg /?
  • reg query /?
  • set /?
  • setlocal /?

推荐阅读