Batch file 批处理文件:使用动态标记数设置变量

Batch file 批处理文件:使用动态标记数设置变量,batch-file,for-loop,Batch File,For Loop,我正在使用批处理脚本读取一个文件。基本上,我想读取一个特定的行,并将其标记设置为不同的变量。问题是,该行没有固定数量的令牌。考虑以下文件格式: Line 1 Domains www.google.com www.yahoo.com www.reddit.com ... Line 2 541 5435 322 123 Line 3 273 123 432 123 我的脚本将读取第三个标记等于“Domains”的行,并将后面的标记存储到不同的变量中。在本例中,我将设置Domain1=www.goo

我正在使用批处理脚本读取一个文件。基本上,我想读取一个特定的行,并将其标记设置为不同的变量。问题是,该行没有固定数量的令牌。考虑以下文件格式:

Line 1 Domains www.google.com www.yahoo.com www.reddit.com ...
Line 2 541 5435 322 123
Line 3 273 123 432 123
我的脚本将读取第三个标记等于“Domains”的行,并将后面的标记存储到不同的变量中。在本例中,我将设置
Domain1=www.google.com
Domain2=www.yahoo.com
Domain3=www.reddit.com
,等等。我的代码如下所示:

for /f "tokens=3*" %%A in (%file%) do (
    if ("%%A"=="Domains") (
        REM Delimit %%B with a space and store each token into different variables
    )
)
编辑:问题已解决。由于代表不足,现在回答我自己的问题还为时过早,但以下是我从Jeremy的帖子开始的解决方案:

set index=1
for /f "tokens=3*" %%A in (%file%) do (
    if ("%%A"=="Domains") (
        for %%C in (%%B) do (
            set Domain!index!=%%C
            set /A index+=1
        )
    )
)

这并不能完全按照您希望的方式解决您的问题,但我认为这是一个可行的解决方案:

@echo off

for /f "tokens=3*" %%A in (%file%) do (
  if "%%A"=="Domains" (
    set domains=%%B
  )
)

for %%A in (%domains%) do (
  echo %%A
)

这是我最终找到的解决方案的一半以上,它帮助了我很多!基本上,我制作了一个嵌套的for循环(即,我将您的第二个循环放入第一个循环),并将
%domains%
替换为
%B