如何遍历在cmd中循环字符串? [英] How to iterate string in cmd for loop?

查看:2365
本文介绍了如何遍历在cmd中循环字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在循环批处理脚本的字符串:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆