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
。