2016-10-28 7 views
1

人の名前の後ろに好きな色(以下参照)が続くテキストファイル(text.txt)があります。人の名前に変数「名前」を割り当て、その人の好みの色に変数「色」を割り当てたいと思います。バッチ:変数に行を割り当てる

今、私のコードは、他のすべての行をスキップして名前を正しく引き出しますが、その人の好みの色を割り当てていません。どんな支援も大歓迎です。

TEXT.TXT

john 
blue 
matt 
red 
susan 
yellow 

マイスクリプト:

@echo off 
setlocal enabledelayedexpansion 
set x=0 
for /f "delims=" %%a in (C:\text.txt) do (
    set /a "x=(x+1) %% 2" 
    if !x! == 1 set color=%%a 
    if !x! == 0 call echo !color! 
) 

電流出力:

john 
matt 
susan 
+0

'0'と '1'の間に 'X'のトグルを作るために、あなたはまた、 '使用することができますset/A x = 1-x' ... – aschipfl

+1

@aschipfl ...または 'set/A x =!x'(遅延拡張を有効にした' ^!x')です。 – Aacini

答えて

2

ロジックがありますあなたのループの問題。あなたは最初に名前を読んでから、色をつけて、両方の情報があるときだけ印刷しなければなりません。

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

結果:

john,blue 
matt,red 
susan,yellow 
2

おそらくこの方法が明確に/簡単です:

@echo off 
setlocal enabledelayedexpansion 
set "name=" 
for /f "delims=" %%a in (C:\text.txt) do (
    if not defined name (
     set "name=%%a" 
    ) else (
     echo !name!,%%a 
     set "name=" 
    ) 
) 
関連する問題