中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 关于for命令中的分隔符? 上一主题 | 下一主题
wjcing
初级用户





积分 71
发帖 59
注册 2007-12-27
状态 离线
『楼 主』:  关于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参数就没法指定分隔符吗?默认的分隔符是空格和逗号吗?为什么有以上结果?

2009-5-29 15:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tongzj
初级用户





积分 49
发帖 43
注册 2007-1-20
状态 离线
『第 2 楼』:  

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
  )
)

   此帖被 +1 点积分    点击查看详情   
评分人:【 wjcing 分数: +1  时间:2009-5-30 04:31


2009-5-29 22:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wjcing
初级用户





积分 71
发帖 59
注册 2007-12-27
状态 离线
『第 3 楼』:  



  Quote:
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迭代.
谢谢.

2009-5-30 02:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wjcing
初级用户





积分 71
发帖 59
注册 2007-12-27
状态 离线
『第 4 楼』:  

就如这句吧.
for %%e in (00000 00000,00000 00000,77777 7777,8888888 888888888888,) do ( echo %%e )
它的输出即是用了空格分隔也用了逗号分隔,我如果用
set _str=%%b
set _str=!_str: =^|!
把逗号换成"|"就正常输出了..我现在只是想知道为什么是会是这样输出,和不用把逗号替换的方法..谢谢.

2009-5-30 02:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 5 楼』:  


@echo off
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%a in ('findstr "一:" t.txt') do (
  set var=%%b
  set var=!var:~,-1!
  for %%a in ("!var:,=" "!") do echo %%~a
)
pause
for %%a in () 中的分隔符有 ,;=[空格]

[ Last edited by tireless on 2009-6-4 at 03:31 ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 wjcing 分数: +2  时间:2009-5-30 04:30


2009-5-30 03:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wjcing
初级用户





积分 71
发帖 59
注册 2007-12-27
状态 离线
『第 6 楼』:  

谢谢了. .

2009-5-30 04:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: