我试图在批处理文件中运行正则表达式,该文件将在文本文件中搜索字符串。但是,我的字符串的唯一唯一标识符位于字符串之后,但位于同一行。
我在文件中搜索项目的注册表项。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{RegistryKey} DisplayName REG_SZ Node.js
唯一唯一的字符串是Node.js部分,因此我需要使用regedit在RegistryKey
文本之前查找DisplayName REG_SZ Node.js
。如果有人对此有任何建议,那将会有所帮助。
目前使用
选择字符串I' m/(\{.*\})(\n\s*.)(DisplayName REG_SZ Node.js)
我可以选择字符串。有没有办法批量访问捕获组1?这样我可以拥有我需要的registryKey吗?
通过请求编辑:
批量我正在尝试这样的事情
@ECHO off
::reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{6BA2207A-7E42-434C-8DD4-A2FFC1D9EA68}" > nul
REG Query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ /V "DisplayName" /S >> testSearch.txt
::type "testName"
for /F "tokens=*" %%A in (testSearch.txt) do echo %%A
findstr /r /x "/(\{.*\})(\n\s*.)(DisplayName REG_SZ Node.js)" testSearch.txt >> saveLine.txt
pause
我现在的问题是我只想保存控制组1(作为{registryKey}) 我想我可以使用保存的文本文件并在javascript中解析它只返回注册表项,我已经使用了大量的Javascript和批处理通过节点交织。
答案 0 :(得分:0)
解析字符串的batch
方式是for
循环。要提取字符串的一部分(或某些部分),请使用适当的标记和分隔符。要在文本文件中找到正确的行,请使用find
或findstr
:
@echo off
setlocal
for /f "tokens=1-3 delims={}" %%a in ('type b.txt^|find "DisplayName REG_SZ Node.js"') do (
echo %%a
echo %%b
echo %%c
)
如果我理解正确,您只需要第一个令牌%%a
。