Board logo

标题: [其他] 如何分析一下简单的批处理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://bbs.bathome.net/) Powered by Discuz! 7.2