如何遍历在cmd中循环字符串? [英] How to iterate string in cmd for loop?
问题描述
我想在循环批处理脚本的字符串:
I am trying to iterate a string in batch script:
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个号码将被打印出来:
I expect that all 3 numbers will be printed:
1
2
3
我在做什么错了?
What am I doing wrong?
推荐答案
这是因为FOR / F将一个每行成多个令牌,但您需要定义你要多少令牌处理。
That's because FOR/F splits a each line into multiple tokens, but you need to define how many tokens you want to process.
set var="1 2 3"
for /F "tokens=1-3" %%i in (%var%) do (
echo %%i
echo %%j
echo %%k
)
编辑:其他解决方案
像埃德哈珀的答案:结果
你也可以使用一个正常的循环,用限制,这也将尝试检索算法磁盘上的文件,并且它与 *
和<$ C $问题C>?。
Like the answer of Ed harper:
You could also use a normal FOR-loop, with the limitation that it will also try to serach for files on the disk, and it have problems with *
and ?
.
set var=1 2 3
for %%i in (%var%) do (
echo %%i
)
或者你使用换行符工艺用FOR / F回路,用一个换行符替换您DELIM字符。
Or you use linefeed technic with the FOR/F loop, replacing your delim-character with a linefeed.
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看到五行一个换行符,而不是只有一行分裂。
This works as the FOR/F sees five lines splitted by a linefeed instead of only one line.
这篇关于如何遍历在cmd中循环字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!