中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 18:52
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]如何从QQ2009的Info.db中将号码提取出来(已解决)
可打印版本  7,005 / 30
第16楼 yishanju 发表于 2009-03-03 15:08
银牌会员 发帖 1,357 积分 1,488
我就懒得装2009了

你是怎么替换的
第17楼 Hanyeguxing 发表于 2009-03-03 15:33
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
上传的QQ2009信息info.db文件 http://upload.cn-dos.net/img/1348.rar

例如有如下的乱码:

涳艛?忌:J垟麳]CF K-婣硵艛?忌:鉁s?殸⑽矎?
NF 
 515187266 9TD  傢ろ
04  435853964 -TD 傘18娿
?
 5? o欙L(   } ~搁搁块€8362-406
務蠚崄u39E拞r 515187266 >TD 
ffffTA ?{-%/%//>PWf@=Oφ≌οη∠┫


要求:分行显示数字串。
1,由于QQ号码与乱码中的数字可能因为直接过滤其他字符而导致过滤后QQ号码与乱码中的数字连在一起而无法分辨,所以 个人认为应该使用替换。
2,因为乱码存在类似8362-406的数字串,所以在过滤时不能过滤掉-
3,由于该乱码中存在数字,所以少于5位的连续数字串要求被删除。
4,因为乱码存在类似8362-406的数字串,这些不是QQ号码,删除中间含有-的数字串。
5,删除重复的数字串

提取QQ号码后的示例效果如下:

435853964
515187266


[ Last edited by Hanyeguxing on 2009-3-4 at 01:16 ]
第18楼 yishanju 发表于 2009-03-03 15:38
银牌会员 发帖 1,357 积分 1,488
批处理文件名不能存成和命令一样的名字,不能存成COPY 和FR之类的
第19楼 yishanju 发表于 2009-03-03 15:38
银牌会员 发帖 1,357 积分 1,488
你就传一份文件上来吧
第20楼 Hanyeguxing 发表于 2009-03-03 18:55
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
感谢楼上大大的热心
第21楼 yishanju 发表于 2009-03-04 00:13
银牌会员 发帖 1,357 积分 1,488
还是先说明你这样做的目的吧
这样做究竟是为了什么
是为了把QQ号码提取出来,还是单纯就是要QQ号码之外的字符替换掉

[ Last edited by yishanju on 2009-3-4 at 00:17 ]
第22楼 HAT 发表于 2009-03-04 00:17
版主 发帖 5,017 积分 9,023
Re 17楼
很早之前就有10位QQ号了^_^
第23楼 Hanyeguxing 发表于 2009-03-04 01:17
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
Originally posted by yishanju at 2009-3-4 00:13:
还是先说明你这样做的目的吧
这样做究竟是为了什么
是为了把QQ号码提取出来,还是单纯就是要QQ号码之外的字符替换掉

当然是为了把QQ号码提取出来。。。
我是这样做的:
1,首先,将文件备份,使用fr替换“-”与“0-9”之外的全部字符(因为乱码的数字中间有-,所以保留,例如801056-105)为Z。
2,然后将Z合并为空格
3,接着,以空格换行。但这个命令在运行中造成部分号码丢失及错误,不知道该怎么弄才好。
4,删除空行及空格,特殊字串
5,删除重复行


@echo off&setlocal enabledelayedexpansion
copy info.db isee1.txt>nul 2>nul
fr -ric:"" -t:"Z" ISee1.txt
for /f "delims=" %%i in (ISee1.txt) do (
set han=%%i
>>ISee2.txt echo !han!
)
del ISee1.txt
fr -f:"ZZ" -t:"Z" ISee2.txt
find ISee2.txt "ZZ" && GOTO CC||fr -f:"Z" -t:" " ISee2.txt
for /f "tokens=1*" %%n in (ISee2.txt) do (
set xing=%%n
>>ISee1.txt echo !xing!
>>ISee1.txt echo !xing!
)
del ISee2.txt
for /f "delims=" %%k in (ISee1.txt) do (
set ye=%%k
set "ye=!ye: =!"
set "ye=!ye:012345789=!"
set "ye=!ye:0123456789=!"
>>ISee2.txt echo=!ye!
)
del ISee1.txt
setlocal disabledelayedexpansion
for /f "delims=" %%l in (ISee2.txt) do (
if not defined %%l set %%l=A & echo %%l>>ISee1.txt
)

del ISee2.txt

。。。。。。


6,::删除带-的字串或行
::删除字串少于5位的行(乱码中的连续数字不会达到5位)
。。。。。。哎,没弄好呢

[ Last edited by Hanyeguxing on 2009-3-4 at 02:08 ]
第24楼 yishanju 发表于 2009-03-04 01:27
银牌会员 发帖 1,357 积分 1,488
。。。。
这难度上了不是一个等级,我不会了
第25楼 Hanyeguxing 发表于 2009-03-04 02:00
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
Originally posted by yishanju at 2009-3-4 01:27:
。。。。
这难度上了不是一个等级,我不会了

中途逃跑,是不厚道滴。。。。哈哈
第26楼 HAT 发表于 2009-03-04 05:37
版主 发帖 5,017 积分 9,023
第27楼 zqz0012005 发表于 2009-03-04 21:55
中级用户 发帖 135 积分 297
第28楼 ily2013 发表于 2009-04-23 22:52
中级用户 发帖 83 积分 247
Originally posted by HAT at 2009-3-4 05:37:
第29楼 netbenton 发表于 2009-04-24 00:50
银牌会员 发帖 752 积分 1,916 来自 广西
能否替换的时候,把所有非数字换为0a(换行符),可以的话,再加一个
for /f %%a in (...
就可以所有数字串提取出来了。
再判断%%a是否大于9999便知道是否为QQ号了
这样做速度会快很多。

[ Last edited by netbenton on 2009-4-23 at 22:55 ]
第30楼 yishanju 发表于 2009-04-24 03:08
银牌会员 发帖 1,357 积分 1,488
再判断%%a是否大于9999便知道是否为QQ号了
这思路秒啊
上一页  1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023