中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-30 13:04
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,279 会员排行
DOS批处理 & 脚本技术(批处理室) » 未结:过滤一个文件里所有字符串两头的TAB和空格?
可打印版本  2,391 / 15
第1楼 uiopuiop 发表于 2008-08-21 21:01
中级用户 发帖 211 积分 400
未结:过滤一个文件里所有字符串两头的TAB和空格?
想的我头发都掉了两根,没想出来简单的方法。

一个test.txt 文件里字符串直接都用逗号“,”分隔的,有4列字符串。
但是每个字符串两头可能会有N个TAB或空格,需要把他们过滤掉。但咬保留字符串里的空格。批处理读取的时候可以忽略空行。

高手请帮忙啊!多谢! ****** test.txt 测试文件,请见附件********
次文件是BAT的配置文件,BAT读取里面的数据做相应操作。
相信肯定会很有用。
test.txt
-------------------------------------------------------------------------------
test 1, , ,

test 2 , test 2 , test 3 , test 4
test 2 , test 2 , test 3 , test 4

test 2,ss , ,
test2 , test 2 , test 3 , test 4

-------------------------------------------------------------------------------

[ Last edited by uiopuiop on 2008-8-25 at 10:36 PM ]

附件
TEST.TXT (1.3 KiB)
第2楼 lxmxn 发表于 2008-08-22 01:54
版主 发帖 4,938 积分 11,386


注意,第2个set其实是set name=!name:=!。

[ Last edited by lxmxn on 2008-8-22 at 01:57 AM ]
第3楼 FQ 发表于 2008-08-22 13:25
社区乞丐 发帖 37 积分 -61
通用性比较好,不过有一个弊病,哎
第4楼 abcd 发表于 2008-08-22 14:22
银牌会员 发帖 739 积分 1,436
直接CSV里面VBA

Dim r As Range
For Each r In UsedRange.Cells
r.Value = Trim(r.Value)
Next
第5楼 uiopuiop 发表于 2008-08-22 20:43
中级用户 发帖 211 积分 400
回版主,先谢一下!
不过发现你的算法有时候会有问题,当csv 文件有几项的值为空时,就会出错:
数据会发生错位。
例如

reqwre, reqre, reqre, rewqre
rere, , ,
tt, tt,
add,ddsa,fdaf,dfafd

[ Last edited by uiopuiop on 2008-8-22 at 08:57 PM ]
第6楼 uiopuiop 发表于 2008-08-22 20:50
中级用户 发帖 211 积分 400
Originally posted by FQ at 2008-8-22 01:25 PM:
通用性比较好,不过有一个弊病,哎
第7楼 FQ 发表于 2008-08-22 21:06
社区乞丐 发帖 37 积分 -61
我不知道怎么不能用了???
第8楼 uiopuiop 发表于 2008-08-22 22:40
中级用户 发帖 211 积分 400
回7楼,可能代码贴的有问题,能否传个附件上来,谢了!
第9楼 flyinspace 发表于 2008-08-22 23:13
银牌会员 发帖 517 积分 1,206
没那么麻烦呀?
第10楼 uiopuiop 发表于 2008-08-22 23:19
中级用户 发帖 211 积分 400
Originally posted by FQ at 2008-8-22 09:06 PM:
我不知道怎么不能用了???


有些字段本来含有*号的,结果你把呆*号的字段都过滤了。比如 "SAP*" 就没了。
第11楼 lxmxn 发表于 2008-08-23 01:33
版主 发帖 4,938 积分 11,386
Originally posted by uiopuiop at 2008-8-22 20:43:
回版主,先谢一下!
不过发现你的算法有时候会有问题,当csv 文件有几项的值为空时,就会出错:
数据会发生错位。
例如

reqwre, reqre, reqre, rewqr ...

上面的代码只是按照楼顶的要求写的,没考虑空值的情况,如果不介意的话可以试试用sed来做。


[ Last edited by lxmxn on 2008-8-23 at 01:52 AM ]
第12楼 uiopuiop 发表于 2008-08-23 12:26
中级用户 发帖 211 积分 400
Originally posted by lxmxn at 2008-8-23 01:33 AM:

上面的代码只是按照楼顶的要求写的,没考虑空值的情况,如果不介意的话可以试试用sed来做。
第13楼 abcd 发表于 2008-08-23 19:12
银牌会员 发帖 739 积分 1,436
VBA

Dim r As Range
For Each r In UsedRange.Cells
r.Value = Replace(Trim(r.Value), " ", "")
Next
第14楼 abcd 发表于 2008-08-23 19:13
银牌会员 发帖 739 积分 1,436
csv文件用VBA方便些。
第15楼 uiopuiop 发表于 2008-08-23 19:48
中级用户 发帖 211 积分 400
Originally posted by abcd at 2008-8-23 07:13 PM:
csv文件用VBA方便些。


CSV 文件是我批处理的配置文件,批处理读取数据并执行相应操作。
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023