Windows批处理循环只迭代一次

时间:2014-02-11 19:20:24

标签: batch-file

从批处理文件中给出以下for循环,为什么这只是打印A?我也试过“tokens = 1 *”

set str=A/B/C/D/E/F
for /F "delims=/" %%S in ("%str%") do (
    echo %%~S
)

1 个答案:

答案 0 :(得分:1)

delims选项定义分隔符以将每个行拆分为单独的标记。 令牌本身可以通过连续参数进行访问。

set str=A/B/C/D/E/F
for /F "tokens=1,2,3,4,5 delims=/" %%S in ("%str%") do (
    echo %%~S %%T %%U %%V %%W
)

这将拆分每个行,但您希望将A/B/C/D/E/F作为单独的行处理。

这可以通过注入换行来完成

set LF=^


REM ** Two empty lines are required
setlocal EnableDelayedExpansion
set "str=A/B/C/D/E/F"
for %%L in ("!LF!") DO set "str=!str:/=%%~L!"
for /F "delims=/" %%S in ("!str!") do (
    echo %%~S
)

for %%L in ("!LF!") DO set "str=!str:/=%%~L!"行用换行符替换/