到目前为止这是我的代码:
for /f "tokens=1 eol=," %%f IN ("1,2,3,4") do ( echo . echo %%f )
我期待这样做:
. 1 . 2 .
等等…
但相反,我得到:
. 1
就是这样.我错过了什么?
你误解了这些选择.
> tokens = 1表示您只需要每行上的第一个标记.你想要所有的标记就行了.
> eol =,表示您要将逗号解释为行结束注释的开头.您想使用delims =,而不是指示逗号是分隔符(而不是空格的默认值).
FOR / F主要用于在文件中的行上操作.你不是那样做的.你在单个字符串上操作,所以鲁本斯的回答更接近你想要的:
@ECHO OFF SET test=1,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来获取它们.