我正在尝试在一个批处理文件中运行一个正则表达式,它将在文本文件中搜索字符串。但是,我的字符串的唯一标识符位于字符串之后,但在同一行上。
我在文件中搜索某个项目的注册表项。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{RegistryKey} DisplayName REG_SZ Node.js
唯一唯一的字符串是Node.js部分,所以我需要使用regedit在DisplayName REG_SZ Node.js
文本之前查找RegistryKey
。如果有人对此有任何建议,那将是有帮助的。
当前选择我正在使用的字符串
/(\{.*\})(\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和批处理通过节点交织在一起。
发布于 2017-04-05 00:46:51
解析字符串的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
。
https://stackoverflow.com/questions/43209457
复制相似问题