2016-10-03 113 views
0

我有一個文本文件中需要提取並放入循環的信息。爲了簡單起見,我們假設第一行是一個人,第二行是他們最喜歡的顏色。通過文本文件循環

文本文件看起來像這樣:

tim 
red 
sarah 
blue and yellow 
sam 
green 

我想回聲輸出看起來像這樣:

tim likes red 
sarah likes blue and yellow 
sam likes green 

我對到目前爲止的代碼是下面:

for /f "tokens=1 delims=" %%Name %%color in (C:\textfile.txt) do echo %%Name likes %%color 
+2

那麼,什麼是你的問題? –

+0

我當然沒有說清楚......我想要一個可以將人與自己喜歡的顏色聯繫起來的循環。我現在有什麼不工作。 – chew224

+2

打開一個命令提示符窗口並輸入'for /?' - 你會發現你的語法不正確... – aschipfl

回答

0
@echo off 
setlocal enabledelayedexpansion 
set x=0 
for /f "delims=" %%a in (t.txt) do (
    set /a "x=(x+1) %% 2" 
    if !x! == 1 set name=%%a 
    if !x! == 0 echo !name! likes %%a. 
) 
+0

完全按照預期工作。謝謝。 – chew224

0

對於你的任務我看到如下選項:

  1. 使用for /F循環,並設置和清除變量(NAME)交替期間,每隔一個循環,等待與某個名字相關聯的顏色:

    @echo off 
    setlocal EnableDelayedExpansion 
    set "NAME=" 
    for /F "usebackq tokens=*" %%L in ("textfile.txt") do (
        if defined NAME (
         echo !NAME! likes %%L 
         set "NAME=" 
        ) else (
         set "NAME=%%L" 
        ) 
    ) 
    endlocal 
    
  2. 預先決定的行數的一半,使用for /L循環和每次迭代讀取兩行一次執行輸入重定向(<):

    @echo off 
    setlocal EnableDelayedExpansion 
    for /F %%C in ('^< "textfile.txt" find /C /V ""') do set /A "HALF=%%C/2" 
    
    < "textfile.txt" (
        for /L %%I in (1,1,%HALF%) do (
         set /P NAME= 
         set /P COLOUR= 
         echo !NAME! likes !COLOUR! 
        ) 
    ) 
    endlocal