中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 20:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » for中的delims=可以是字符窜吗?
楼 主 for中的delims=可以是字符窜吗? 发表于 2007-05-25 23:42 ·  中国 湖南 娄底 冷水江市 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
UID 73968
性别 男
状态 离线
我想用for命令这样行吗?

@echo off
set "var=333ps555psssword=123 456 789"
for /f "tokens=1* delims=psssword" %%i in ("%var%") do set str=%%i&set num=%%j
echo %str% %num%
pause

我的本意是
设 str=333ps555
num==123 456 789
可结果却是
str=333
num=555psssword=123 456 789


为什么我运行的结果是以 p 或 s 为分隔符的啊?而不是以psssword为分隔符?

[ Last edited by 26933062 on 2007-8-13 at 12:13 AM ]
致精致简!
2 发表于 2007-05-26 00:07 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
UID 75212
性别 男
状态 离线
delims=psssword
将会以这些字母做为分割符;不只是p和s,w,o,r,d也将被用做分割符;

delims不能将字符串做为分割符;
3 发表于 2007-05-26 00:10 ·  中国 湖南 娄底 冷水江市 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
UID 73968
性别 男
状态 离线
哦.原来这样,就是说只能以一个单一的字母或符号作分隔符 是吗?

[ Last edited by 26933062 on 2007-8-11 at 05:59 AM ]
致精致简!
4 发表于 2007-05-26 00:36 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
Originally posted by 26933062 at 2007-5-26 00:10:
哦.原来这样,就是说只能以一个单一的字母或符号作分隔符 是吗?

for 命令的 delims 选项是这样的。

要以 psssword 这个字串为分隔符,我仅仅知道 gawk 这个工具可以,在论坛搜索一下可以找到下载地址。


C:\>echo 333ps555psssword=123 456 789|gawk "BEGIN{FS=\"psssword\"}{str=$1;num=$2;print \"str=\"str\"\nnum=\"num}"
str=333ps555
num==123 456 789
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
sunshine217 +1 2007-06-02 21:24
5 发表于 2007-05-26 00:40 ·  中国 湖南 娄底 冷水江市 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
UID 73968
性别 男
状态 离线
哦.谢谢了,用工具就不用了,......
主要是学批处理,,,,
6 发表于 2007-05-26 00:49 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
Originally posted by 26933062 at 2007-5-26 00:40:
哦.谢谢了,用工具就不用了,......
主要是学批处理,,,,


有时用一些工具可以解决很多问题的,但我不强求。

虽然 for 命令的 delims 选项不支持字串的分割,但是如果想达到你的目的,换一个思路或许也可以:

@echo off
set "var=333ps555psssword=123 456 789"
set "var=%var:psssword=_%"
for /f "tokens=1* delims=_" %%a in ("%var%") do set str=%%a&set num=%%b
echo str=%str%
echo num=%num%
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
nanhui112 +2 2008-03-07 21:39
7 发表于 2007-06-02 21:25 ·  中国 上海 静安区 电信
新手上路
积分 0
发帖 1
注册 2007-06-01 23:13
UID 90006
性别 男
状态 离线
dd
8 发表于 2007-06-02 21:53 ·  中国 湖南 永州 电信
初级用户
积分 68
发帖 32
注册 2006-10-20 12:14
UID 67277
状态 离线
各位大侠们呀,为什么都不写命令的注释啊,让我们这些菜鸟看了一头雾水呀,里面用到的一些怪子符,网上也找不到用法啊.结果看了等于没看.不知道每条命令具体的含义,遇到别的问题的时候就不能举一反三.唉
9 发表于 2007-06-04 11:57 ·  中国 四川 绵阳 江油市 电信
高级用户
★★★
积分 502
发帖 327
注册 2006-12-30 06:01
UID 74981
性别 男
状态 离线
Originally posted by baikaifang at 2007-6-2 09:53 PM:
各位大侠们呀,为什么都不写命令的注释啊,让我们这些菜鸟看了一头雾水呀,里面用到的一些怪子符,网上也找不到用法啊.结果看了等于没看.不知道每条命令具体的含义,遇到别的问题的时候就不能举一反三.唉



雾里看花啊,3D图片就是这样看出来的,坚持看上3个月,你就清楚了,我就是去年12

月开始雾里看花的啊,现在看3D图片了
10 发表于 2007-06-04 15:05 ·  中国 重庆 大足区 联通
初级用户
积分 44
发帖 25
注册 2007-03-25 00:24
UID 82812
性别 男
状态 离线
前面看懂了,后面是天书
11 发表于 2007-08-03 08:28 ·  中国 湖北 武汉 电信
新手上路
积分 9
发帖 5
注册 2007-08-02 11:01
UID 94492
性别 男
状态 离线
是啊都是天书。。
12 发表于 2007-08-03 10:12 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
3D图片几秒就可以了啊
13 发表于 2007-08-08 10:02 ·  中国 广东 湛江 万通宽带网
初级用户
积分 45
发帖 23
注册 2007-07-31 11:08
UID 94354
性别 男
状态 离线
^_^ 难懂啊
14 发表于 2007-08-16 01:26 ·  中国 陕西 西安 电信
初级用户
积分 106
发帖 44
注册 2007-06-01 22:25
UID 90001
性别 男
状态 离线
lxmxn版主果然高,把password用_来替换了。
15 顶了!! 发表于 2007-10-18 22:56 ·  中国 河北 廊坊 联通
初级用户
积分 36
发帖 14
注册 2007-03-04 03:22
UID 80710
性别 男
状态 离线
set "var=%var:psssword=_%",把password用_来替换了.
学习了.
论坛跳转: