中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 07:55
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 多条件提取数据II
可打印版本  929 / 7
第1楼 hgx126 发表于 2009-02-05 12:27
初级用户 发帖 80 积分 100
多条件提取数据II
不好意思,我又要麻烦大家了。由于是新手上路,求助的时候比较多,请大家多见谅!

上次大家帮助我解决了同时多满足多个条件提取数据的问题,这次请大家再次帮偶一个忙:

同样是一目录下有多个文本,其中一个内容如下:




现要将满足以下其中任意一个条件的该行数据提取到b.txt。(以|为分隔符)
1、第三列数据的前四位为“1231”;
2、第三列数据的前四位为“1241”;
3、第三列数据的前四位为“1254”;

求一批处理,批量将该目录下的所有文本里满足条件的数据提取出来。求
大家帮忙。
第2楼 yishanju 发表于 2009-02-05 12:54
银牌会员 发帖 1,357 积分 1,488
无非就是那几个命令的改改就能用,经常用到为什么不自己学一学
type *.txt|findstr /r /c:".*[|].*[|]1231.*[|].*[|].*[|].*[|].*" /c:".*[|].*[|]1241.*[|].*[|].*[|].*[|].*" /c:".*[|].*[|]1254.*[|].*[|].*[|].*[|].*" >>b.txt
pause
第3楼 moniuming 发表于 2009-02-05 12:59
银牌会员 发帖 574 积分 1,335 来自 广西


[ Last edited by moniuming on 2009-2-5 at 13:00 ]
第4楼 hgx126 发表于 2009-02-06 00:57
初级用户 发帖 80 积分 100
感谢moniuming及yishanju兄。

不过我想的是一个文本提取后的数据生成另外一个文件名,而不是将该目录下的的所有文件合并生成一个文件。
最好是在原文件名上加一个前缀。
比如a.txt生成一个新的a.csv或a_new.txt文件。我用了>>%%~n0%.csv或等没成功,是哪里错了?

[ Last edited by hgx126 on 2009-2-6 at 22:27 ]
第5楼 yishanju 发表于 2009-02-06 11:18
银牌会员 发帖 1,357 积分 1,488
for /r %%i in (*.txt) do (
findstr /r /c:".*[|].*[|]1231.*[|].*[|].*[|].*[|].*" /c:".*[|].*[|]1241.*[|].*[|].*[|].*[|].*" /c:".*[|].*[|]1254.*[|].*[|].*[|].*[|].*" %%i >>%%~ni.cvs
)
第6楼 yishanju 发表于 2009-02-06 11:28
银牌会员 发帖 1,357 积分 1,488
for /r %%i in (*.txt) do (
findstr /r /c:".*|.*|1231.*|.*|.*|.*|.*" /c:".*|.*|1241.*|.*|.*|.*|.*" /c:".*|.*|1254.*|.*|.*|.*|.*" %%i >>%%~ni.cvs
)

把命令简化成这样试试看行不行,

[ Last edited by yishanju on 2009-2-6 at 11:29 ]
第7楼 moniuming 发表于 2009-02-07 00:02
银牌会员 发帖 574 积分 1,335 来自 广西
加一个for应该可以了吧,试试?
第8楼 hgx126 发表于 2009-02-09 21:16
初级用户 发帖 80 积分 100
谢谢
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023