如何迭代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