批处理:为变量分配行

时间:2016-10-28 15:38:01

标签: batch-file text

我有一个文本文件(text.txt),列出了一个人的名字,然后是他们喜欢的颜色(见下文)。我想分配变量" name"该人的姓名和变量" color"这个人最喜欢的颜色。

现在,我的代码通过跳过其他所有行来正确地提取名称,但它没有指定该人最喜欢的颜色。非常感谢任何帮助。

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

2 个答案:

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

答案 1 :(得分: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="
   )
)