Вы неправильно поняли параметры.
tokens=1
означает, что вам нужен только первый токен в каждой строке. Вы хотите, чтобы все токены были на линии.
eol=,
означает, что вы хотите интерпретировать запятую как начало комментария к концу строки . Вместо этого вы хотите использовать delims=,
, чтобы указать, что запятая является разделителем (вместо значения пробела по умолчанию).
FOR / F предназначен главным образом для работы со строками в файле. Ты этого не делаешь. Вы работаете с одной строкой, поэтому ответ Рубенса ближе к тому, что вы хотите:
@ECHO OFF
SET test=1,2,3,4
FOR /D %%F IN (%test%) DO (
ECHO .
ECHO %%F
)
Однако, теоретически, вы должны быть в состоянии сказать что-то вроде:
FOR /F "usebackq delims=, tokens=1-4" %%f IN ('1^,2^,3^,4') DO (
ECHO .
ECHO %%f
ECHO .
ECHO %%g
ECHO .
ECHO %%h
ECHO .
ECHO %%i
)
Это также работает, но, вероятно, не масштабируется так, как вы хотите. Обратите внимание, что вы должны экранировать запятую в строке, используя символ ^, и вы должны указать нужные токены, а затем использовать последующие переменные% g,% h и% i для их получения.