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

时间:2011-08-23 15:30:34

标签: 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

我的脚本将读取第三个标记等于“域”的行,并将后面的标记存储到不同的变量中。在这种情况下,我会设置Domain1=www.google.comDomain2=www.yahoo.comDomain3=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
        )
    )
)

1 个答案:

答案 0 :(得分:1)

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

@echo off

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

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