Если у вас действительно есть многострочная переменная со встроенными переводами строк, это просто:
FOR /F "tokens=1,2,*" %%1 in ("!x!") DO (
echo Column1: %%1 --- Column2: %%2 --- Column3: %%3
)
FOR / F l oop всегда принимает строку за строкой (разделенные переводом строки).
Эти строки делятся на токены разделителями (option: delims=
) на токены, количество создаваемых токенов контролируется с помощью option: tokens=
, в этом случае первые три токена отображаются на %%1
, %%2
и %%3
.
Для получения дополнительной информации прочитайте справку FOR /?
Если вы хотите разделить токены, необходимо использовать опцию delims
(по умолчанию пробел и TAB).
For /F "tokens=1,2,3 delims=<a TAB CHARACTER>" ...
Полный пример:
@echo off
setlocal EnableDelayedExpansion
(set LF=^
%==%
)
set "multiline=Line1 col2!LF!Line2 colB!LF!Line3 col-two"
echo multiline - contains:!LF!!multiline!!LF!-------
FOR /F "tokens=1,2,*" %%1 in ("!multiline!") DO (
echo Column1: %%1 --- Column2: %%2 --- Column3: %%3
)