![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 05:16 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 帮忙解释代码:在QQ好友中寻找08年1至9月没有联系的好友 |
| 可打印版本 1,028 / 5 |
| 第1楼 bluemanlb | 发表于 2009-01-08 10:23 |
| 初级用户 发帖 14 积分 24 | |
|
帮忙解释代码:在QQ好友中寻找08年1至9月没有联系的好友 上面代码的目的就是在QQ好友中寻找08年1至9月没有联系的好友的QQ。 其中message.txt里面的文件格式如下 : 消息对象:冰雪*~无情(229244313) 消息对象:♀恋依/珍(282162453) 3120.txt里面的内容就是我从QQ消息管理器里面导出QQ聊天记录文体. 我有如下的一些疑问,还望高手可以帮我解释一下,谢了. 1、程序中delims=()表示在文件中用()分隔,是不是所有含有“()”的行只能用"()"进行分隔,其中takens=1即为括号外面的内容,tokens=2就是括号里面的内容。例如上例中就是括号的QQ号? 2、这段代码: findstr "2008-0-" 3120.txt ^| find "%%i"是不是就是在指定日期的聊天记录里查寻相关的QQ号码(即%%i变量)有没有聊天记录。但是我在DOS里试了一下,findstr "2008-0-" 3120.txt 只能生成这样的文件格式: 2008-9-15 18:25:58 QQ名字 里面并没有QQ号,所以即使有聊天记录,上面的代码也是无法查到的吧?但为何程序可以实现其功能呢?望解释一下,谢了。 ——————————————————————— 转移自 DOS疑难解答 & 问题讨论 (解答室) 明显发错版块,予以扣分处理。 ——管理员 ——————————————————————— ───────────────── 版务记录 ───────────────── 执行:HAT 操作:在帖子标题中增加搜索关键字;代码加code标签 说明:原标题"for的问题,请高手帮我解释一下下面的这段代码?"不利于论坛搜索 处罚:扣除2点积分 提示:建议阅读以下帖子 {1415}提问的智慧 {7326}论坛新手必读,所有人的基本行为准则 {22703}请不要做浮躁的人 {32667}那些连标题都写不清楚的人们啊,你们醒醒吧 {32825}本版严厉整顿烂帖 ───────────────── 版务记录 ───────────────── [ Last edited by HAT on 2009-1-8 at 11:22 ] |
|
| 第2楼 bluemanlb | 发表于 2009-01-08 12:59 |
| 初级用户 发帖 14 积分 24 | |
|
有人帮我解答一下吗?谢了
|
|
| 第3楼 exzzz | 发表于 2009-01-08 14:54 |
| 初级用户 发帖 167 积分 194 | |
Originally posted by bluemanlb at 2009-1-8 10:23 AM: 我看的不是很明白。。。 第一个问题,【DELIMS=()】,是说以【(】或【)】符号为分隔符,takens=1表示取第一个分隔符之前的内容并赋值给%%i,takens=2,则第一到第二个分隔符之间的值赋值给%%i 举例: ("X(Y)Z)(") 中,如若takens=1,2,3,4 那么%%i就等于X,%%j等于Y,如果takens=2,3,4,那么 %%i等于Y,%%j等于Z 例如 for /f "takens=2 delims=()" %%i in ("X(Y)Z)(") do echo %%i 结果等同于 for /f "takens=1 delims=()" %%i in ("X(Y)Z)(") do echo %%j 第二个问题,你前面半截说的是对的,后面半截,因为我不知道你的txt文件的内容格式,所以无法解答了 |
|
| 第4楼 bluemanlb | 发表于 2009-01-09 10:45 |
| 初级用户 发帖 14 积分 24 | |
|
EX.我的那个文件的格式就是QQ聊天记录导出来的文本格式,你可以导一下自己的QQ聊天记录,谢了.
|
|
| 第5楼 exzzz | 发表于 2009-01-10 13:14 |
| 初级用户 发帖 167 积分 194 | |
|
首先要指出,你这条语句不对,因为不论3120.txt是否包括所有人的聊天记录,执行的结果都是所有人都在result.txt中。原因自己考虑一下吧。
现在解释你第2个疑问。 如果findstr 在查找 2008-01到2008-09的时候成功,也就是该用户在此期间联系过,所以findstr直接显示包含这个时间的行,确实,这行不含有用户的号码。但也因此find XXXX会失败,因为||,执行前面命令失败,因此会执行【 echo 号码 >>result.txt】 但是如果findstr失败了呢?findstr就会提示提示【FINDSTR: 无法打开 XXXXXXX】,从而【find xxxxx “FINDSTR: 无法打开 XXXXXXX”】就成功了,因此就不会执行了 echo %%i 的命令。 其中的^和|以及||请自行参考 http://www.cn-dos.net/forum/viewthread.php?tid=30985&fpage=1&highlight=%E7%AC%A6%E5%8F%B7 [ Last edited by exzzz on 2009-1-10 at 13:26 ] |
|
| 第6楼 exzzz | 发表于 2009-01-10 13:18 |
| 初级用户 发帖 167 积分 194 | |
|
把好友列表保存为friends.txt,例如其中包含 123456 这个号码 然后导出好友聊天记录,按号码命名,例如有123456.txt 这个聊天记录 再执行以上命令就可以了。 [ Last edited by exzzz on 2009-1-10 at 13:27 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |