1

私が処理しているファイル(param.txt)はタブで区切られ、最初の列の内容は_で区切られています。

param.txt

ONE_one  two  three
FOUR_four  five  six
SEVEN_seven  eight  nine

このファイルを処理するために、以下のスクリプトを作成しました。

@echo off & setlocal enableextensions enabledelayedexpansion
for /f "tokens=1,2,3 delims=    " %%G in ('type param.txt') do (
  for /f "tokens=1 delims=_" %%a in ('echo %%G') do (
    echo %%a -- %%b -- %%H -- %%I
  )
)
endlocal & goto :EOF

これにより、以下の出力が生成されます。

ONE -- %b -- two -- three
FOUR -- %b -- five -- six
SEVEN -- %b -- eight -- nine

%bの代わりに「値」を出力するようにスクリプトで何を修正する必要がありますか?

4

2 に答える 2

2

に置き換えtokens=1てみてくださいtokens=1,2

複数の区切り文字を指定できるため、単一のforループで抽出を実行できることにも注意してください。

for /f "tokens=1,2,3,4 delims=_ " %%G in ('type param.txt') do (
  echo %%G -- %%H -- %%I -- %%J
)
于 2012-05-08T13:10:11.490 に答える
0

あなたが提示したシナリオに対して、JRL は正しい答えを得ました。

最初の列の値に「seven_seven_seven」のような値が含まれる可能性がある場合は、最初の_. その場合、2 番目の FOR ステートメントで "tokens=1*" を使用します。そうすれば、%%b には「seven_seven」が含まれます。

于 2012-05-08T13:18:57.897 に答える