[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 如何分析一下简单的批处理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 编辑 ]

delims= .,;  这句话的意思是设定字符串的分隔符为逗号(,) 分号(;) 以及句号(.)还有空格( )
所以%str%可以分解为:
token_1: I 对应的是%%a
token_2: love 对应的是%%b
token_3: bbs 对应的是%%c
token_4: bathome 对应的是%%d

所以组合起来就是: I love bbs bathome

TOP

回复 1楼 的帖子

多做几次试验,例如在这段代码中先去掉TOKENS中的"3"或去掉后面的%%a(b.c.d),一开始都这样。但拿到一段代码看没有危险性,就试验一下,一会就明白了

TOP

谢谢两位的回答,不过任不是我想要的结果。

一是,我想知道
@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=.,; 这个写法正确(空格在最后)

TOP

delims 空格必须放在最后,这是语法要求,没什么好说的。
技术问题请到论坛发帖求助!

TOP

返回列表