1

我正在处理的文件(param.txt)是制表符分隔的,第一列的内容是_分隔的。

参数.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=1tokens=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”这样的值,那么您可能只想在第一个_. 在这种情况下,您想在第二个 FOR 语句中使用“tokens=1*”。这样 %%b 将包含“seven_seven”。

于 2012-05-08T13:18:57.897 回答