如何迭代cmd中的字符串for循环?

我想重复在批处理脚本的字符串:如何迭代cmd中的字符串for循环

set var="1 2 3" 

for /F %%i in (%var%) do (

echo %%i

)

,并获得此输出:

C:\>batch.bat 

C:\>set var="1 2 3"

C:\>for /F %i in ("1 2 3") do (echo %i)

C:\>(echo 1)

1

我希望所有的3个号码将被打印:

1 

2

3

什么我做错了吗?

回答:

这是因为FOR/F一分割每行到多个令牌,但您需要定义你要多少令牌处理。

set var="1 2 3" 

for /F "tokens=1-3" %%i in (%var%) do (

echo %%i

echo %%j

echo %%k

)

编辑:其他解决方案

像埃德哈珀回答:
你也可以使用一个正常的循环,与限制,这也将尝试检索算法对文件磁盘,它有问题*?

set var=1 2 3 

for %%i in (%var%) do (

echo %%i

)

或者你用换行符TECHNIC用FOR/F循环,用一个换行符替换您DELIM字符。

setlocal EnableDelayedExpansion 

set LF=^

set "var=1 2 3 4 5"

set "var=%var: =!LF!%"

for /F %%i in ("!var!") do (

echo %%i

)

这是因为FOR/F看到五行被换行而不是只有一行。

回答:

尝试FOR代替FOR /F。此外,设置var在引用值是不必要的:

set var=1 2 3 

for %%i in (%var%) do (

echo %%i

)

回答:

因为FOR /F会循环显示文本文件的每一行,并且在与字符串一起使用时(""引用),它只会在该行上执行操作。它由空格分隔,但是这是与选项tokens一起使用。

您应该使用FOR

set var=1 2 3 

for %%i in (%var) do (

echo %%i

)

如果你想循环数,使用以下命令:

for /L %%i in (1,1,3) do (

echo %%i

)

以上是 如何迭代cmd中的字符串for循环? 的全部内容, 来源链接: utcz.com/qa/259288.html

回到顶部