中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 01:41
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求教:tokens和delims是什么意思例子如下 查看 2,535 回复 14
楼 主 求教:tokens和delims是什么意思例子如下 发表于 2006-09-19 04:38 ·  中国 广东 深圳 罗湖区 天威有线宽带(关内)
初级用户
积分 80
发帖 25
注册 2006-09-15 03:01
19年会员
UID 62615
状态 离线
@echo off
set sharefilename=share_filenames.sfn
if exist %sharefilename% del %sharefilename%
net share > %sharefilename%
for /f "tokens=1,2,3 delims= " %%a in (%sharefilename%) do (
if "%%c"=="默认共享" (
net share %%a /d
echo delete %%a >> deleteshareresult.log
)
if "%%c"=="远程管理" (
net share %%a /d
echo delete %%a >> deleteshareresult.log
)
)
if exist %sharefilename% del %sharefilename%

tokens和delims是什么意思 先谢谢先
2 发表于 2006-09-19 06:50 ·  中国 云南 昆明 电信
初级用户
★★
积分 134
发帖 50
注册 2006-03-28 13:50
20年会员
UID 52939
状态 离线
delims=xxx - 指分隔符集。这个替换了空格和跳格键的
默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
的 for 本身。这会导致额外变量名称的分配。m-n
格式为一个范围。通过 nth 符号指定 mth。如果
符号字符串中的最后一个字符星号,
那么额外的变量将在最后一个符号解析之后
分配并接受行的保留文本。
3 发表于 2006-09-19 08:01 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
20年会员
UID 53056
状态 离线

for /f "tokens=1,2,3 delims= " %%a in (%sharefilename%) do (
if "%%c"=="默认共享" (
net share %%a /d
echo delete %%a >> deleteshareresult.log
)
if "%%c"=="远程管理" (
net share %%a /d
echo delete %%a >> deleteshareresult.log
)
)


tokens 和 delims 联合起来用的

首先定义了分隔符

比如
文档a
1空格2空格3空格4空格
那么它会把空格做分隔符 然后把满足条件的 第一位,第二位,第三位 传递出来
我们在引用的时候 (按此例)
引用方式为
%%a 对应第1位
%%b 对应第2位
%%c 对应第3位

而已而已!!

楼主结合一下 2楼放出来的帮助
我觉得能看明白了吧

[ Last edited by kcdsw on 2006-9-19 at 08:03 ]
4 谢谢xg911335和kcdsw的指教, 说的很明白简单 发表于 2006-09-19 21:48 ·  中国 广东 深圳 罗湖区 天威有线宽带(关内)
初级用户
积分 80
发帖 25
注册 2006-09-15 03:01
19年会员
UID 62615
状态 离线
如果用来扫描ip的话能不能用来判断网络的情况,只是不懂tokens 和 delims的用法
5 发表于 2006-09-20 05:00 ·  IANA 局域网IP(Private-Use)
初级用户
积分 70
发帖 27
注册 2006-09-19 19:23
19年会员
UID 63080
性别 男
来自 河南
状态 离线
以默认方式,/F 通过每个文件的每一行中分开 的第一个空白符号。跳过空白行。您可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个 指定不同解析选项的关键字。这些关键字为:
eol=c - 指一个行注释字符的结尾(就一个)
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。
usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且一个单 引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。

某些范例可能有助:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或 空格定界符号。请注意,这个 for 程序体的语句引用 %i 来 取得第二个符号,引用 %j 来取得第三个符号,引用 %k来取得第三个符号后的所有剩余符号。对于带有空格的文件 名,您需要用双引号将文件名括起来。为了用这种方式来使 用双引号,您还需要使用 usebackq 选项,否则,双引号会
被理解成是用作定义某个要分析的字符串的。
6 uime谢谢你 发表于 2006-09-22 03:26 ·  中国 广东 深圳 罗湖区 天威有线宽带(关内)
初级用户
积分 80
发帖 25
注册 2006-09-15 03:01
19年会员
UID 62615
状态 离线
很详实
7 翻译的真差,还是看英文的好 发表于 2007-07-27 14:22 ·  加拿大 Bell
新手上路
积分 2
发帖 1
注册 2007-06-22 10:34
19年会员
UID 92057
性别 男
状态 离线
翻译的真差,还是看英文的好,
不会犯就别乱翻,误人子弟阿
8 发表于 2007-07-27 22:53 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
Originally posted by renweimin365 at 2007-7-27 14:22:
翻译的真差,还是看英文的好,
不会犯就别乱翻,误人子弟阿


搞笑呢?上面好象是WINDOWS自带的FOR 的/?显示的帮助……

看来楼上E文不错:D
9 发表于 2007-07-27 23:06 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
说实在的。WINDOWS帮助里翻译,有时还真是狗屁不通的。
10 发表于 2007-07-28 15:36 ·  中国 湖北 潜江 电信
高级用户
★★★
积分 894
发帖 411
注册 2007-02-17 12:15
19年会员
UID 79697
性别 男
状态 离线
是不是机器翻译的啊
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


11 发表于 2007-07-28 23:26 ·  中国 广东 佛山 顺德区 电信
初级用户
★★
积分 193
发帖 98
注册 2007-01-17 11:56
19年会员
UID 76803
性别 男
状态 离线
FOR 还真的下些功夫
这家伙很聪明 什么都没留下
12 发表于 2007-08-27 19:53 ·  中国 广东 深圳 诺瓦科技发展有限公司
初级用户
积分 32
发帖 21
注册 2007-08-22 13:29
18年会员
UID 95593
性别 男
状态 离线
顶一下,人家就算翻的不好,总比光看不翻强多了吧
13 发表于 2007-08-27 19:53 ·  中国 广东 深圳 诺瓦科技发展有限公司
初级用户
积分 32
发帖 21
注册 2007-08-22 13:29
18年会员
UID 95593
性别 男
状态 离线
要不你们来纠正补充下
14 发表于 2007-08-27 20:42 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
我没觉得不通顺……=.=难道我理解力太强了?
15 发表于 2010-06-27 16:25 ·  中国 吉林 长春 电信
初级用户
枫中残雪
积分 65
发帖 43
注册 2010-04-29 23:20
16年会员
UID 165810
性别 男
来自 吉林省长春市
状态 离线
FOR还真不是一般强大呢。看来得用功了
论坛跳转: