1

「input.txt」があり、文字列を検索して引用符の間の文字列を抽出したいのですが、input.txt には 2 行しかありません。

name=' james carter'  nationality = ' usa '  age=32
name='fabio    rossi'  nationality = ' italia - milano '  age=19

バッチで引用符から名前 (スペースを含む) を抽出し、それらを変数に入れます (この場合、必要な変数は 2 つだけです)。たとえば、次の 2 つの変数を設定します。

name= james carter
name=fabio    rossi

したがって、これらの変数をバッチで使用して、将来の操作を行うことができます。

ps。必要に応じて sed を使用しても問題ありません

編集

無理そうなので、このように引用符を付けたまま文字列を取ればいいのではないでしょうか

name1=' james carter'
name2='fabio    rossi'

だから今の問題は、何から始まり、何name='で終わるかということです'

4

2 に答える 2

3

これを試すことができます:

@echo off
setlocal enabledelayedexpansion
set "INPUT_FILE=input.txt"
set "SED_CMD=sed "s/name='\(.[^^']*\)'.*/\1/""
set i=0
for /f "usebackq tokens=*" %%a in (`findstr "name=" %INPUT_FILE%`) do (
    set /a i+=1
    for /f "usebackq tokens=*" %%v in (`echo %%a ^| %SED_CMD%`) do (
        echo %%v
    )
)

name1次に、必要な値を含む変数 ( 、 ) などを列挙しますname2
これは、指定された形式 ( ie name='something' blah blah ) を持つ任意の行で機能することに注意してください。

編集: string を含まない行を破棄するようにコードを変更しましたname=

于 2012-06-21T14:53:46.923 に答える
2

関心のある各行が常に同じ形式で、 から始まるname='場合、ネイティブ バッチ ソリューションは単純です。

@echo off
setlocal
set input="test.txt"
for /f "tokens=1,3 delims=:'" %%A in (
  'findstr /b /c:"name='" %input% ^| findstr /n "^"'
) do set "name%%A=%%B"

このソリューションでは、名前の値に文字が含まれていないことを前提としています:

于 2012-06-21T16:57:52.390 に答える