中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 23:39
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 关于for命令中的分隔符?
可打印版本  748 / 5
第1楼 wjcing 发表于 2009-05-29 15:32
初级用户 发帖 59 积分 71
关于for命令中的分隔符?
我有一文件t.txt
内容如下:
一:1 2,3 4,5 6,
二:2 3,4 5,6 7,


for /f "tokens=1* delims=:" %%a in ('findstr "一:" t.txt') do (
for %%e in (%%b) do (
echo %%e
)
运行后输出为
1
2
3
4
5
6
我想要的结果是:
1 2
3 4
5 6
for 命令没有/f参数就没法指定分隔符吗?默认的分隔符是空格和逗号吗?为什么有以上结果?
第2楼 tongzj 发表于 2009-05-29 22:31
初级用户 发帖 43 积分 49
for 命令可以指定分隔符,你之前用的 delims=: 就是用冒号分隔了,默认是空格分隔。

改为下面语句就可以了:

for /f "tokens=1* delims=:" %%a in ('findstr "一:" t.txt') do (
for /f "tokens=1,2,3 delims=," %%e in ("%%b") do (
echo %%e
echo %%f
echo %%g
)
)
第3楼 wjcing 发表于 2009-05-30 02:09
初级用户 发帖 59 积分 71
Originally posted by tongzj at 2009-5-29 10:31 PM:
for 命令可以指定分隔符,你之前用的 delims=: 就是用冒号分隔了,默认是空格分隔。

改为下面语句就可以了:

for /f "tokens=1* delims=:" %%a in ( ...

不好意思..我没说清楚....我的这个一和二,是不固定的...
它现在是这样..
一:1 2,3 4,5 6,
二:2 3,4 5,6 7,
以后可能是这样了...
一:1 2,3 4,5 6,11 23,d dd,ddb ddc,
二:2 3,4 5,6 7,d dxd,
他是不固定的..所以不能用这种 tokens=1,2,3迭代.
谢谢.
第4楼 wjcing 发表于 2009-05-30 02:17
初级用户 发帖 59 积分 71
就如这句吧.
for %%e in (00000 00000,00000 00000,77777 7777,8888888 888888888888,) do ( echo %%e )
它的输出即是用了空格分隔也用了逗号分隔,我如果用
set _str=%%b
set _str=!_str: =^|!
把逗号换成"|"就正常输出了..我现在只是想知道为什么是会是这样输出,和不用把逗号替换的方法..谢谢.
第5楼 tireless 发表于 2009-05-30 03:23
银牌会员 发帖 1,122 积分 2,025


for %%a in () 中的分隔符有 ,;=

[ Last edited by tireless on 2009-6-4 at 03:31 ]
第6楼 wjcing 发表于 2009-05-30 04:31
初级用户 发帖 59 积分 71
谢谢了. .
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023