2012-05-08 169 views
1

我正在處理的文件(param.txt)是製表符分隔的,第一列的內容是_定界的。批處理 - FOR循環問題

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

嘗試用tokens=1,2代替tokens=1

還要注意的是,你可以做一個單一的萃取循環,因爲你可以指定多個分隔符:

for /f "tokens=1,2,3,4 delims=_ " %%G in ('type param.txt') do (
    echo %%G -- %%H -- %%I -- %%J 
) 
+0

+1比我快39秒。 – iesou

0

JRL了給你介紹的情況下正確的答案。

如果第一列中的某個值可能包含「seven_seven_seven」之類的值,那麼您可能只想在第一個_上打破。在這種情況下,你想在第二個FOR語句中使用「tokens = 1 *」。這樣%% b將包含「seven_seven」。