ks1*_*322 4 windows string for-loop cmd batch-file
我试图在批处理脚本中迭代一个字符串:
set var="1 2 3"
for /F %%i in (%var%) do (
echo %%i
)
Run Code Online (Sandbox Code Playgroud)
得到这个输出:
C:\>batch.bat
C:\>set var="1 2 3"
C:\>for /F %i in ("1 2 3") do (echo %i )
C:\>(echo 1 )
1
Run Code Online (Sandbox Code Playgroud)
我希望将打印所有3个数字:
1
2
3
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
jeb*_*jeb 12
这是因为FOR/F将每一行拆分为多个令牌,但您需要定义要处理的令牌数.
set var="1 2 3"
for /F "tokens=1-3" %%i in (%var%) do (
echo %%i
echo %%j
echo %%k
)
Run Code Online (Sandbox Code Playgroud)
编辑:其他解决方案
就像Ed harper的答案一样:
你也可以使用普通的FOR循环,但是它也会尝试搜索磁盘上的文件,并且它有*和?.
set var=1 2 3
for %%i in (%var%) do (
echo %%i
)
Run Code Online (Sandbox Code Playgroud)
或者您使用换行技术和FOR/F循环,用换行符替换您的delim-character.
setlocal EnableDelayedExpansion
set LF=^
set "var=1 2 3 4 5"
set "var=%var: =!LF!%"
for /F %%i in ("!var!") do (
echo %%i
)
Run Code Online (Sandbox Code Playgroud)
这适用于FOR/F看到由换行而不是仅一行分割的五条线.
尝试FOR代替FOR /F. var另外,在不需要设置时引用该值:
set var=1 2 3
for %%i in (%var%) do (
echo %%i
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11668 次 |
| 最近记录: |