我有 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 enabledelayedexpansion
将 cmd
设置为延迟扩展模式,其中 !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
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 enabledelayedexpansion
将 cmd
设置为延迟扩展模式,其中 !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