我有 3 个变量设置为相同的名称,我认为它只看到最后一个

I have 3 variables set to the same name and I think it only see's the last one

for /f "skip=2 tokens=1" %%i in (my.txt) do set row=%%i

my.txt:

random    random random 
random  random words
type1    random random 
type2  random random
type3    random random random

我要的是第一列三个词的变量(type1,type2,type3)。

试试这个:

for /f "%%i in (my.txt) do echo %%i

你想要什么

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "data="
FOR /f %%a IN (q28666033.txt) DO SET "data=!data! %%a
SET "data=%data:~1%"
ECHO(%data%

GOTO :EOF

我使用了一个名为 q28666033.txt 的文件,其中包含您的数据用于我的测试。

我认为我们遇到了术语问题。你说你想要第一行的变量,但是 type1 random random 是第一行而 type1,type2,type3 是第一列。

你的skip=是跳过的行数,也就是忽略。我发布的代码使用默认值(什么都不跳过,使用默认标记=1)

setlocal enabledelayedexpansioncmd 设置为延迟扩展模式,其中 !var! 表示 "the value of var as it changes within the loop"。循环中的 %var% 表示 "the original value of var"。 由于该数据是使用 space 分隔符累积的,因此 for 循环之后的值将包含前导 space。 for 循环后的 set 命令删除第一个字符。

试试这个:

for /f "tokens=1*" %%i in (my.txt) do set %%i=%%j

给你的文本文件,前一行相当于这三个:

set type1=    random random 
set type2=  random random
set type3=    random random random