中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 17:20
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 请问怎样有条件将空格替换成逗号
可打印版本  1,398 / 7
第1楼 sady2009 发表于 2009-02-19 11:45
初级用户 发帖 60 积分 58
请问怎样有条件将空格替换成逗号
文本 a.txt

C 123 456 78
123 56 我是谁 中国人
123 56 I am chinese
123 56 我是谁中国人

处理后结果:b.txt

C,123,456,78
123,56,我是谁 中国人
123,56,I am chinese
123,56,我是谁中国人

要求中文或英文部分中的空格不要替换成逗号,谢谢
第2楼 sady2009 发表于 2009-02-19 12:29
初级用户 发帖 60 积分 58
小弟也是最近对批处理感兴趣,真是博大精深。奥妙无穷啊。set if for 等命令还是有点晕乎。正则表达式等那就更..,不过我正在学习ing~~~

上面这个问题困扰我很久了,对高手可能是小菜小碟。请帮一下忙吧。

[ Last edited by sady2009 on 2009-2-19 at 12:31 ]
第3楼 yishanju 发表于 2009-02-19 12:41
银牌会员 发帖 1,357 积分 1,488
把替换的规则详细的说遍
我发现用FR 正则替换都是一个头疼的问题
第4楼 yishanju 发表于 2009-02-19 12:43
银牌会员 发帖 1,357 积分 1,488
是不是每一行都由四个字符串组成:
11 22 33 44
像上面这种格式
第5楼 sady2009 发表于 2009-02-19 13:00
初级用户 发帖 60 积分 58
谢谢楼上朋友关注!

可能我表达的是不是很清楚。详细再说一下,抱歉!

在A.txt 存在以下行的内容

C 123 456 78
123 56 我是谁 中国人
123 56 I am chinese
123 56 我是谁中国人
C 123 456 78
123 56 我是谁 中国人
123 56 I am chinese
123 56 我是谁中国人

内容是有规律可循的。包含c 开头和行, 和数字开头的行两种情况。

C 开头的行总共是四列,后三列是数字, 要求此行空格全部替换成","
数字开头的行要求将前两列的数字部分后边空格替换成"," ,之后的列是英文或中文也含有空格,这些空格保持不变,不要替换.

要求正确的结果如下:

处理后结果:b.txt

C,123,456,78
123,56,我是谁 中国人
123,56,I am chinese
123,56,我是谁中国人
处理后结果:b.txt
C,123,456,78
123,56,我是谁 中国人
123,56,I am chinese
123,56,我是谁中国人

请问批处理该怎么样写呢?


下面是我自己写的,不合要求,见笑了
for /f "tokens=1,2,3,4 delims= " %%i IN (a.txt) DO @if %%i==C (echo %%i,%%j,%%k,%%l >>b.txt) else @echo %%i,%%j,%%k >>b.txt

123 56 I am chinese 变成了 123,56,I 了, 我需要的结果是123,56,I am chinese.

请高手指点一二。谢谢

[ Last edited by sady2009 on 2009-2-19 at 13:32 ]
第6楼 moniuming 发表于 2009-02-19 13:48
银牌会员 发帖 574 积分 1,335 来自 广西
第7楼 sady2009 发表于 2009-02-19 13:59
初级用户 发帖 60 积分 58
谢谢,

可以解释一下吗? 或给个地址。
第8楼 pkto 发表于 2009-10-22 21:01
初级用户 发帖 62 积分 62
moniuming兄的确很强大。

也许是对fr的了解还不够深入,但就目前学习的感觉,fr的缺点就是环境必须很规则,如果环境不规则(例如字符的数量、顺序、各类、位置等一旦杂乱),局限性就很大
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023