2017-04-04 18 views
1

文字ファイルを検索するバッチファイルで正規表現を実行しようとしています。しかし、私の文字列のユニークな識別子は文字列の後に来ますが、同じ行にあります。"特定の文字列"の前の文字列を検索する正規表現

私はファイルのアイテムのレジストリキーを探しています。しかし、ユニークである

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

だけの文字列は、Node.jsの部分であるので、私はDisplayName REG_SZ Node.jsテキストの前にRegistryKeyを探すためにregeditを使用する必要があります。誰かがこれについてのアドバイスを持っているなら、それは役に立ちます。

現在、私は

/(\{.*\})(\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 I({のRegistryKey}であることを)保存したいです私は保存されたテキストファイルを使用して、javascriptでそれを解析してレジストリキーを返すことができたと思います.Javascriptとバッチをノード経由でたくさん使っています。

+0

正規表現だけでなく、実際のコードを表示します。 – abelenky

+0

はい、表示してください。私は 'バッチ'がREGEXをしているのが分かります... – Stephan

+0

[findstr](https://ss64.com/nt/findstr.html)は、REGEXのサブセットが非常に限られています。あなたが望むものを遠隔からでも行うことはできません。 (少なくともREGEXをサポートする 'cmd'では_only_コマンドです)。 – Stephan

答えて

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を必要としています。

関連する問題