batch-file - 将 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#,但这似乎有点矫枉过正。
解决方案
命令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 /?
推荐阅读
- javascript - 为每个新连接自动将参数更改为 iframe 中的 URL
- django - Django-在密码重置电子邮件中插入图像
- windows - 如何通过 git update-index 在 Git 中创建可执行的 Powershell 脚本
- java - 使用 jrebel 和 kumuluz
- regex - 当 A 列中的所有 3 个条件都满足时,仅将 B 列中的项目输出到 C 列
- java - 在python中运行java命令
- cuda - CUDA 中的响应时间问题为什么 cpu 比 gpu 快?
- php - 如何将输入文本更改为 url 链接
- java - 有什么方法可以在 java 中显示变量名前 5 名?
- python - python Set的非确定顺序