for-loop和delimeters

CSG*_*CSG 1 windows for-loop cmd batch-file

我需要快速的方法在bat文件中插入几行结构化数据我使用了一个名为myarray的数组来扫描和"读取"我的值,但它不起作用,我不明白为什么这是我的代码:

@echo off
set myarray[1]=myfield1#myfield2#mysubfield31;mysubfield32#myfield4
for /f "tokens=1-9 delims=#" %%a in ('echo %myarray[1]%') do (
    echo field1 is %%a
    echo field2 is %%b
    echo field3 is %%c
    echo field4 is %%d
    for /f "tokens=1-9 delims=;" %%k in ('echo %%c') do (
        echo subfield3 is %%k
        echo subfield3 is %%l       
    )
)
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

field1 is myfield1
field2 is myfield2
field3 is mysubfield31 mysubfield32
field4 is myfield4
subfield3 is mysubfield31 mysubfield32
subfield3 is
Run Code Online (Sandbox Code Playgroud)

为什么我不能简单地获得:

subfield3 is mysubfield31 
subfield3 is mysubfield32
Run Code Online (Sandbox Code Playgroud)

哪里是 ";" 在第二个用作定界符?

fox*_*ive 5

这有效:

@echo off
set myarray[1]=myfield1#myfield2#mysubfield31;mysubfield32#myfield4
for /f "tokens=1-9 delims=#" %%a in ("%myarray[1]%") do (
    echo field1 is %%a
    echo field2 is %%b
    echo field3 is %%c
    echo field4 is %%d
    for /f "tokens=1-9 delims=;" %%k in ("%%c") do (
        echo subfield3 is %%k
        echo subfield3 is %%l       
    )
)
pause
Run Code Online (Sandbox Code Playgroud)