标题:for中的delims=可以是字符窜吗?
作者:26933062 | 时间:2007-05-25 23:42 | 标题:for中的delims=可以是字符窜吗?
我想用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 ]
作者:bjsh | 时间:2007-05-26 00:07
delims=psssword
将会以这些字母做为分割符;不只是p和s,w,o,r,d也将被用做分割符;
delims不能将字符串做为分割符;
作者:26933062 | 时间:2007-05-26 00:10
哦.原来这样,就是说只能以一个单一的字母或符号作分隔符 是吗?
[ Last edited by 26933062 on 2007-8-11 at 05:59 AM ]
作者:lxmxn | 时间:2007-05-26 00:36
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
作者:26933062 | 时间:2007-05-26 00:40
哦.谢谢了,用工具就不用了,......
主要是学批处理,,,,
作者:lxmxn | 时间:2007-05-26 00:49
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
作者:sunshine217 | 时间:2007-06-02 21:25
dd
作者:baikaifang | 时间:2007-06-02 21:53
各位大侠们呀,为什么都不写命令的注释啊,让我们这些菜鸟看了一头雾水呀,里面用到的一些怪子符,网上也找不到用法啊.结果看了等于没看.不知道每条命令具体的含义,遇到别的问题的时候就不能举一反三.唉
作者:qingfushuan | 时间:2007-06-04 11:57
Originally posted by baikaifang at 2007-6-2 09:53 PM:
各位大侠们呀,为什么都不写命令的注释啊,让我们这些菜鸟看了一头雾水呀,里面用到的一些怪子符,网上也找不到用法啊.结果看了等于没看.不知道每条命令具体的含义,遇到别的问题的时候就不能举一反三.唉
雾里看花啊,3D图片就是这样看出来的,坚持看上3个月,你就清楚了,我就是去年12
月开始雾里看花的啊,现在看3D图片了
作者:step2step | 时间:2007-06-04 15:05
前面看懂了,后面是天书
作者:huyujuen121 | 时间:2007-08-03 08:28
是啊都是天书。。
作者:slore | 时间:2007-08-03 10:12
3D图片几秒就可以了啊
作者:sting | 时间:2007-08-08 10:02
^_^ 难懂啊
作者:1112yuhua | 时间:2007-08-16 01:26
lxmxn版主果然高,把password用_来替换了。
作者:liuyun20 | 时间:2007-10-18 22:56 | 标题:顶了!!
set "var=%var:psssword=_%",把password用_来替换了.
学习了.
作者:tobisome | 时间:2007-10-19 19:46
双感叹号与双%号的区别是什么呢
for的do里面好像看到的是!n!
其他的像echo看到的是%n%
这个可以讲讲吗
作者:lxmxn | 时间:2007-10-19 19:47
看置顶FAQ。
作者:handan | 时间:2007-10-19 20:56
tokens=1* 这个是什么意思 我没看懂
作者:moniuming | 时间:2008-01-25 00:38
还是版主高明啊,佩服
作者:komafd2 | 时间:2008-02-22 16:15
自己试了一下,把word当成分隔符
@ echo off
set "a=333ps555psssword=123 456 789"
for /f "tokens=1* delims=word" %%i in ("%a%") do set b=%%i&set num=%%j
echo %b:~0,-4% %num%
pause
作者:nanhui112 | 时间:2008-03-07 21:52
这个问题值得研究研究...就是当 delims=字符串时 以什么样的方式分割.
作者:lovelymorning | 时间:2008-03-08 14:24
善用变量,多用 偷梁换柱
作者:huahua0919 | 时间:2008-03-08 15:01
delims=字符串时 举例:
如果字符串是abc
则起到分割作用的分割符有
a,b,c,ab,ac,bc,abc
学过排列组合的就知道不管字符的长度为多少,分割符总是为:
Cn1+Cn(n-1)..........Cnn,就有这么多的可能!
作者:nanhui112 | 时间:2008-03-08 22:56
只能主观这么认为 我的意思是字符串在被分割的字符串中有什么特点时 已什么样的方式分割
我也是实验知道的 列如若delims=中的字符串具有唯一性时 会以第整串字母作为分割符 否则 会以第一个字符作为分割符 不够准确 望大虾指出!
作者:bjsh | 时间:2008-03-09 15:41
Originally posted by nanhui112 at 2008-3-8 10:56 PM:
只能主观这么认为 我的意思是字符串在被分割的字符串中有什么特点时 已什么样的方式分割
我也是实验知道的 列如若delims=中的字符串具有唯一性时 ...
"delims=abcedef"
无论 那种情况 delims 的分割 是以 等号 后的每一个字符作为分隔符的
只是在 所谓的 "唯一性" 时 看起来 像 以整个字符串为分隔符而已
作者:wjmm | 时间:2008-07-01 10:03
经测试,还可以用一个汉字作分隔符,
我的理解,分隔符是
一个字节
Originally posted by 26933062 at 2007-5-26 12:10 AM:
哦.原来这样,就是说只能以一个单一的字母或符号作分隔符 是吗?
[ Last edited by 26933062 on 2007-8-11 at 05:59 AM ]
作者:zh159 | 时间:2008-07-02 08:55
Originally posted by wjmm at 2008-7-1 10:03:
经测试,还可以用一个汉字作分隔符,
我的理解,分隔符是一个字节
正如 3 楼说的,只能以一个单一的字母或符号作分隔符,而不是一个字节(一个汉字是两个字节)
作者:wjmm | 时间:2008-07-02 15:16
经测试,分隔符可以是一个汉字
比如,有一文本文件test.txt,其内容如下
-------------------------------------------------------------------------------
111111你2222222你3333333333你4444444
55555你66666你7777777777777777777你88888
9999你00000你aaaaaaaa你bbbbbb
---------------------------------------------------------------------------------
批处理代码
@echo off
FOR /F "tokens=1,3,4 delims=你" %%a in (test.txt) do @echo %%a %%b %%c
pause
执行该批处理后,可以发现汉字“你”确实可以作为分隔符
字节"
Originally posted by zh159 at 2008-7-2 08:55 AM:
正如 3 楼说的,只能以一个单一的字母或符号作分隔符,而不是一个字节(一个汉字是两个字节)
[
Last edited by wjmm on 2008-7-3 at 11:30 AM ]
作者:zzybq | 时间:2009-10-29 12:16
确实很好,学习了
作者:Evangel | 时间:2009-10-31 15:26
楼上的兄弟挖坟能力好强……看了半天,才知道是2年前的帖子了……不过也很经典
来源:https://www.cn-dos.net/forum/viewthread.php?tid=30942 · 打印时间 2026-06-14 21:08