jco*_*lum 6 windows cmd batch-file
到目前为止这是我的代码:
for /f "tokens=1 eol=," %%f IN ("1,2,3,4") do (
echo .
echo %%f
)
Run Code Online (Sandbox Code Playgroud)
我期待这样做:
.
1
.
2
.
Run Code Online (Sandbox Code Playgroud)
等等...
但相反,我得到:
.
1
Run Code Online (Sandbox Code Playgroud)
就是这样.我错过了什么?
i_a*_*orf 11
你误解了这些选择.
tokens=1意味着你只需要每一行的第一个标记.你想要所有的令牌就行了.eol=,表示您希望将逗号解释为行结束注释的开头.您希望使用delims=,而不是指示逗号是分隔符(而不是空格的默认值).FOR/F主要用于在文件中的行上操作.你不是那样做的.你在单个字符串上运行,所以鲁本斯的答案更接近你想要的:
@ECHO OFF
SET test=1,2,3,4
FOR /D %%F IN (%test%) DO (
ECHO .
ECHO %%F
)
Run Code Online (Sandbox Code Playgroud)
但是,从理论上讲,你应该可以这样说:
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
)
Run Code Online (Sandbox Code Playgroud)
这也有效,但可能无法以您想要的方式扩展.请注意,您必须使用^字符转义字符串中的逗号,并且必须指定所需的标记,然后使用后续变量%g,%h和%i来获取它们.
| 归档时间: |
|
| 查看次数: |
11799 次 |
| 最近记录: |