![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 12:48 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]批量统计文本中有效电话号码并粘贴到excel表中? |
| 可打印版本 1,895 / 10 |
| 第1楼 anykill | 发表于 2009-09-17 06:58 |
| 新手上路 发帖 6 积分 6 | |
|
[求助]批量统计文本中有效电话号码并粘贴到excel表中? 现我有很多附件中那样的文件,目的就是提取出其中此人常联系的有效号码。什么1008611,10661700之类的除外。并把提取出的10个有效号码粘贴到一个excel表格的对应此文件名的行的某列中,因为数据实在是太多了。之前都是用excel排序人工弄的。效率实在太低了。而且很折磨人啊。试过了很多办法都不知道怎么办。茫然啊。望高人指点一下迷津,给个思路也行。具体用什么比较好解决。之前查到一个叫replace pioneer的软件,里面有个叫pattern counter的工具可以导入文本文件并统计排序,只要设置下参数,比如\d{7,}就是统计7位以上数据的,但是他这个软件并不能让我批处理这么多文件。苦恼哦。
|
|
| 第2楼 anykill | 发表于 2009-09-17 07:02 |
| 新手上路 发帖 6 积分 6 | |
|
你们找得到我上传的文件吗。叫1693.txt,第一次上传。。在什么上传系统里面
|
|
| 第3楼 xiaofei120 | 发表于 2009-09-17 07:03 |
| 新手上路 发帖 14 积分 14 | |
|
没看到。。。。
|
|
| 第4楼 anykill | 发表于 2009-09-17 08:14 |
| 新手上路 发帖 6 积分 6 | |
|
http://upload.cn-dos.net/img/1693.txt
真不知道怎么上传文件。,文盲啊。这样行不? |
|
| 第5楼 Hanyeguxing | 发表于 2009-09-17 08:35 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
注意:
1,此批处理需要第三方命令行工具 sed.exe ,从网址 http://ishare.iask.sina.com.cn/f/5621524.html 下载,然后和批处理保存在同一目录下,放到system32目录下也可。 2,1693.txt为原始源文件,I.txt为输出文件 3,>I.txt echo 序号 次数 电话号码,中间是制表符,不是一串空格 4,if !C! lss 11 >>I.txt echo !C! !E! %%j),中间是制表符,不是一串空格 输出结果示例: 序号 次数 电话号码 1 1280 134****0555 2 1163 135****8816 3 154 137****5982 4 76 081****2445 5 48 800****54107 6 44 132****5767 7 43 153****1636 8 43 132****3700 9 35 138****4200 10 26 159****6315 ...... 将此文本中内容直接在 excel 中粘贴就可以。 [ Last edited by Hanyeguxing on 2009-9-18 at 07:53 ] |
|
| 第6楼 anykill | 发表于 2009-09-17 09:04 |
| 新手上路 发帖 6 积分 6 | |
|
非也非也,我提取出的号码就是他常联系其他人的号码,为了就是找到本人。不要滤除10位以下的数字啊,我是说找到他常联系的10个人的号码比如13688888888,15988888888,8234888,0107654321之类的,不用排列不排列了,只要出现次数多的前10个号码就把他们粘出来就好了
|
|
| 第7楼 Hanyeguxing | 发表于 2009-09-17 11:10 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
@echo off
关闭回显及不显示本行。 setlocal enabledelayedexpansion 启用变量延迟。 >I.txt echo 序号 次数 电话号码 创建文本 I.txt 并输出内容“序号 次数 电话号码”。 sed "s//\n/g" T.txt 提取文本中所有数字,每组数字都独立一行,并忽略所有敏感字符。 findstr ^*$ 从 sed 操作的结果集中搜索符合条件的数字,即7位以上的数字。 for /f "delims=" %%i in ( 解析 sed 和 findstr 的结果集。 set A=%%i 将解析所获取的值赋值给变量 A 。 if "!A:~0,3!" neq "000" 截取变量 A 的前3个字符,判断其是否为 000 ,否则... if "!A:~0,2!" neq "10" 截取变量 A 的前2个字符,判断其是否为 10 ,否则... if "!A:~0,4!" neq "2009" 截取变量 A 的前4个字符,判断其是否为 2009 ,否则...(以上3个 if 的语句为与逻辑。) if "!A:~0,5!" == "17951" set A=!A:~5! 截取变量 A 的前5个字符,判断其是否为 17951 ,是则截取其第6个字符及其后面所有字符,并赋值给变量 A 。 set /a A_!A!+=1 设置变量集并计数。其中,变量名为: A_!A! : A_ 为前缀, !A! 为后部分,由以上4个 if 语句判断获得。 set 输出所有环境变量。 findstr "^A_" 从环境变量中过滤出变量名字首为 A_ 的所有变量。 for /f "tokens=1,2 delims==_" %%i in ( 解析过滤后的环境变量,以 = 和 _ 为区段分隔符。变量名赋值给 %%i ,变量的值赋值给 %%j 。 set B=00000000%%j 将变量 %%j 前加8个0,并赋值给变量 B 。 set C_!B:~-9!:%%i== 设置变量集。每个变量的值均是 = 。变量名是 C_!B:~-9!:%%i ,其中 C_ 为前缀, B:~-9! 为前部,由变量 B 截取最后9个字符获得, : 为中间部分,为下一语句分隔用, %%i 为后部分。 findstr "^C_" 从环境变量中过滤出变量名字首为 C_ 的所有变量。 sort /r 对 findstr 的结果集进行排序, /r 指定反向排序。 for /f "tokens=1,2 delims==_:" %%i in ( 解析过滤后的环境变量,以 = 、 _ 和 : 为区段分隔符。变量名前半部分赋值给 %%i ,变量名后半部分赋值给 %%j 。 set /a C+=1 加计数,并将累积值赋值给变量 C 。 call :D %%i 调用标签 :D ,并传递变量 %%i 为第一个参数 %1 。 >>I.txt echo !C! !E! %%j 输出变量 !C! 、!E! 和 %%j 。 if !C! lss 11 ( 判断变量 C 是否小于11,是则... start notepad I.txt 使用记事本程序打开文本 I.txt ,并不等待关闭退出这个程序。 exit 退出本批处理。 set E=%1 将传递的参数 %1 设置为变量 E 。 if "!E:~0,1!" == "0" set E=!E:~1!&goto F 截取变量 E 的第一个字符并判断其是否为0,如果不是,退出标签 :D ;如果是0,则截取第2个字符及后面所有字符,即去掉这个0,并赋值给变量 E 。然后返回标签 :F ,重复这个操作,直到变量 E 的字首没有0为止。 [ Last edited by Hanyeguxing on 2009-9-18 at 08:02 ] |
|
| 第8楼 anykill | 发表于 2009-09-18 03:33 |
| 新手上路 发帖 6 积分 6 | |
|
呵呵,真好用,我刚试了下,剩下的就该我好好去消化学习一下这些代码,好改成真正适合自己的东西。还有就是能不能让这10个号码自动的就导入一个excel表的指定位置去啊。完了就是把一个文件夹里面所有的txt原始数据都像这条那样自动一个一个往excel里面导
|
|
| 第9楼 Hanyeguxing | 发表于 2009-09-18 06:56 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
你可以将多个这样的处理后的文本合并到一个文本中,使用制表符分隔好,最后一次性粘贴到excel中去
|
|
| 第10楼 anykill | 发表于 2009-09-18 08:56 |
| 新手上路 发帖 6 积分 6 | |
|
恩,很多问题还需要处理,我刚接触这个,代码看起来好火星。我慢慢消化一下再问吧,最后还是得靠自己的努力。不能有什么不懂的就开问,多谢大家带我走进这扇大门啊。温暖的社会主义大家庭
|
|
| 第11楼 iqplhui | 发表于 2009-10-02 10:12 |
| 新手上路 发帖 1 积分 1 | |
|
慢慢看,学习中~~
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |