2017-04-04 82 views
1

我試圖在批處理文件中運行正則表達式,該文件將搜索字符串的文本文件。但是,我的字符串唯一的唯一標識符位於字符串之後,但位於同一行。正則表達式,在「某些字符串」之前搜索字符串

我在文件中搜索項目的註冊表項。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{RegistryKey} DisplayName REG_SZ Node.js 

是唯一然而,唯一的字符串是Node.js的一部分,所以我需要使用註冊表編輯器來尋找RegistryKeyDisplayName REG_SZ Node.js文本之前。如果有人對此有任何建議,那會很有幫助。

目前選擇我使用

/(\{.*\})(\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

顯示您的實際代碼,而不僅僅是您的正則表達式。 – abelenky

+0

是的,請顯示它。我很好奇看到'批'執行REGEX ... – Stephan

+0

[findstr](https://ss64.com/nt/findstr.html)只有REGEX的一個非常有限的子集。沒有辦法讓它甚至遠程執行你想要的。 (並且它是'cmd'中的_only_命令,它至少支持REGEX的最小值)。 – Stephan

回答

0

batch解析字符串的方法是for循環。要提取字符串的一部分(或某些部分),請使用適當的令牌和分隔符。要查找文本文件中的正確路線,使用findfindstr

@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

相關問題