批处理 - FOR循环问题

时间:2012-05-08 13:03:07

标签: batch-file

我正在处理的文件(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?

2 个答案:

答案 0 :(得分: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
)

答案 1 :(得分:0)

根据您提出的情况,JRL得到了正确答案。

如果第1列中的值可能包含类似“seven_seven_seven”的值,那么您可能只想在第一列_上中断。在这种情况下,您希望在第二个FOR语句中使用“tokens = 1 *”。那样%% b将包含“seven_seven”。