标题:
[其他]
如何分析一下简单的批处理for语句?
[打印本页]
作者:
lawzk
时间:
2010-11-25 16:40
标题:
如何分析一下简单的批处理for语句?
下面这句代码不太明白。哪位朋友帮忙分析一下:
@echo off
set str="I love,bbs;bathone.net"
for /f "tokens=1,2,3,4 delims=.,; " %%a in (%str%) do echo %%a %%b %%c %%d
pause
执行结果:
I love bbs bathone
请按任意键继续. . .
主要是tokens和delims,关于tokens和delims都懂,只是这个例子,一时想不太清楚。
麻烦说一下上面代码执行的详细流程。谢谢
另外:
如果这样写不正确,为什么
for /f "tokens=1,2,3,4 delims= .,;" %%a in (%str%) do echo %%a %%b %%c %%d
就是delims中把空格放到前面。执行就出错。好像必须放到最后。我不知道原因是什么。麻烦解释
[
本帖最后由 lawzk 于 2010-11-25 16:42 编辑
]
作者:
TX_kakashi
时间:
2010-11-25 17:57
delims= .,; 这句话的意思是设定字符串的分隔符为逗号(,) 分号(;) 以及句号(.)还有空格( )
所以%str%可以分解为:
token_1: I 对应的是%%a
token_2: love 对应的是%%b
token_3: bbs 对应的是%%c
token_4: bathome 对应的是%%d
所以组合起来就是: I love bbs bathome
作者:
wc726842270
时间:
2010-11-25 18:29
标题:
回复 1楼 的帖子
多做几次试验,例如在这段代码中先去掉TOKENS中的"3"或去掉后面的%%a(b.c.d),一开始都这样。但拿到一段代码看没有危险性,就试验一下,一会就明白了
作者:
lawzk
时间:
2010-11-25 22:27
谢谢两位的回答,不过任不是我想要的结果。
一是,我想知道
@echo off
set str="I love,bbs;bathone.net"
for /f "tokens=1,2,3,4 delims=.,; " %%a in (%str%) do echo %%a %%b %%c %%d
pause
的执行流程。
另外,为什么下面的写法不正确。
for /f "tokens=1,2,3,4 delims= .,;" %%a in (%str%) do echo %%a %%b %%c %%d
区别就是delims中,空格在第一个位置,和正确的写法:空格在最后
即
delmis= .,;这个写法错误(空格在第一个)
delmis=.,; 这个写法正确(空格在最后)
作者:
随风
时间:
2010-11-26 10:40
delims 空格必须放在最后,这是语法要求,没什么好说的。
欢迎光临 批处理之家 (http://bathome.net./)
Powered by Discuz! 7.2