![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 23:48 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 再问一段循环的代码 |
| 可打印版本 2,165 / 24 |
| 第1楼 ka56 | 发表于 2006-12-23 16:11 |
| 中级用户 发帖 129 积分 234 | |
|
再问一段循环的代码 没办法,手中的活没做完,只能再发贴求助了,
主要思路:从一个文本里逐行提取URL中的一部分字符,交给wget去下载网页,然后用find找关键字,找到了提交某个字符给文本,如果遇到网络不好,无法显示页面就重新下载并识别,直到下载到有关键字的正常网页为止, 我现在这样写: @echo off for /f "tokens=1,2" %%i in (D:\123.txt) do ( wget -O %%i.htm http://www.cn-dos.net/forum/viewpro.php?uid=%%i sleep 3000 find "中国DOS联盟论坛" D:\%%i.htm >nul&& echo %%i>>D:\正常.txt find "无法显示网页" D:\%%i.htm >nul&& 想用当前的URL字符值重新下载怎么写? ) 没有基础搞很久都不成,请大虾们务必指导下,嘿嘿,明天再来看,谢谢>>>>> |
|
| 第2楼 ka56 | 发表于 2006-12-23 22:55 |
| 中级用户 发帖 129 积分 234 | |
|
再看下~~
|
|
| 第3楼 namejm | 发表于 2006-12-24 02:08 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
顶楼的,请你把条件说得清楚一点,在关键的地方用模糊指代的语言是不可能让别人帮你想办法的。
请你至少把以下内容交代清楚: 1、一个文本?什么内容?具体格式?有何规律? 2、URL中的哪部分字符? 3、find关键字是什么? 4、提交字符给文本?什么样的字符?交给哪个文本? 缺少了以上任何一项,不可能写出任何一行代码。 |
|
| 第4楼 vkill | 发表于 2006-12-24 02:11 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
如果遇到网络不好,无法显示页面就重新下载并识别,直到下载到有关键字的正常网页为止
这点可以用wget的自身参数实现 |
|
| 第5楼 vkill | 发表于 2006-12-24 02:13 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
sleep 3000
这句没有起到什么作用,可以删除 |
|
| 第6楼 ka56 | 发表于 2006-12-24 02:21 |
| 中级用户 发帖 129 积分 234 | |
Originally posted by namejm at 2006-12-23 13:08: 1、一个文本?什么内容?具体格式?有何规律? 只是举个例就性,如上面那个%%i就是UID,逐行提取 2、URL中的哪部分字符? 如: 54899 476666 65453 2439 3、find关键字是什么? 要设定关键字是"无法显示网页",时重新下载网页,这个是防止网络不好是用的,也是我发贴想问的.. 4、提交字符给文本?什么样的字符?交给哪个文本? 这个不用回答,echo %%i>>D:\正常.txt这些我自己来完成 不知斑斑明白了吗?对不起哦~~ |
|
| 第7楼 ka56 | 发表于 2006-12-24 02:26 |
| 中级用户 发帖 129 积分 234 | |
Originally posted by vkill at 2006-12-23 13:13: 是吗?主要是想提高代码的可靠性,想100%下载来,不要有无法显示的.. 可以用wget的自身参数实现 .. 大虾指教下,非常之感谢!!! |
|
| 第8楼 namejm | 发表于 2006-12-24 02:30 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
1、请把你的 123.txt 内容张贴一部分出来,“上面那个%%i就是UID” 这样的说法对写代码没有任何帮助,说了也等于没说;
2、在没有见到 123.txt 的内容之前,你这样的说法没有任何意义,还是白说; 3、不发表任何意见; 4、你这样一说,我好象明白了些什么,但是我很快又什么也不明白了。 说到底,你还是不太明白请求别人帮助的时候,究竟该给别人提供些什么信息,请你站在解答问题这个角度来思考,想想该提供些什么信息。 |
|
| 第9楼 ka56 | 发表于 2006-12-24 02:36 |
| 中级用户 发帖 129 积分 234 | |
Originally posted by namejm at 2006-12-23 13:30: 1、请把你的 123.txt 内容张贴一部分出来,“上面那个%%i就是UID” 这样的说法对写代码没有任何帮助,说了也等于没说; 2、在没有见到 123.txt 的内容之前,你这样的说法没有任何意义,还是白说; 123.TXT就是这样的,一次只提取一行,我那些代码已经做到了: 54899 476666 65453 2439 主要想遇到网络故障时,不断的去下载没完成的..比如在提取到"65453"去下载时遇到网络故障,就是想不段的去试下载这个含"65453"URL的网页 [ Last edited by ka56 on 2006-12-23 at 01:39 PM ] |
|
| 第10楼 vkill | 发表于 2006-12-24 02:46 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
wget的参数,baidu搜索很多的啊
|
|
| 第11楼 ka56 | 发表于 2006-12-24 02:55 |
| 中级用户 发帖 129 积分 234 | |
Originally posted by vkill at 2006-12-23 13:46: wget -c -O 可以吗? 但我还是想知道怎么去循环下载..... @echo off for /f "tokens=1,2" %%i in (D:\123.txt) do ( ::就是想让脚本回到这里,%%i这个值应该保持当前的值 wget -O %%i.htm http://www.cn-dos.net/forum/viewpro.php?uid=%%i sleep 3000 find "中国DOS联盟论坛" D:\%%i.htm >nul&& echo %%i>>D:\正常.txt find "无法显示网页" D:\%%i.htm >nul&& ................. ) [ Last edited by ka56 on 2006-12-23 at 01:59 PM ] |
|
| 第12楼 ka56 | 发表于 2006-12-24 03:11 |
| 中级用户 发帖 129 积分 234 | |
|
主要想问循环怎么写~~~~
|
|
| 第13楼 ka56 | 发表于 2006-12-24 04:00 |
| 中级用户 发帖 129 积分 234 | |
|
@echo off
for /f "tokens=1,2" %%i in (D:\123.txt) do ( :标记 wget -O %%i.htm http://www.cn-dos.net/forum/viewpro.php?uid=%%i sleep 3000 find "中国DOS联盟论坛" D:\%%i.htm >nul&& echo %%i>>D:\正常.txt find "非正常的字符" D:\%%i.htm >nul&& 在这里GOTO到标记不行吧? ) 正常时: find "中国DOS联盟论坛" D:\%%i.htm >nul&& echo %%i>>D:\正常.txt 到非正常时想重新下载,很多时候是需要重新下载的: find "非正常的字符" D:\%%i.htm >nul&& 找到非正常的后要重新下怎么写??? 这些代码对我比较重要,大虾抽空指导下吧...! [ Last edited by ka56 on 2006-12-23 at 03:05 PM ] |
|
| 第14楼 redtek | 发表于 2006-12-24 04:22 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
) 关于并发高速下载
普通循环方式下载很多网页(比如要下载几千个页面)会很慢, 建议 Start 出 30 或 100 个 CMD 同时下载(同时连入不同的页面下载),反正有的是内存,不用白不用。 而且宽带速度也快,但不可能下载一个页面就占满了你的带宽,而且当你连接网站指定要下某个页面时,还要等待那边数据库提取…… 所以,同时进行 30 个任务,这样速度极快~:) 楼主可以试试用 Start 来模拟多任务并发更好玩~:) ) 关于是否继续等待 或是 多次重复下载那些没有正常连接网页 多次下载没有正常连接的页面,更耽误和影响还在列队中的任务。 所以建议楼主: 1) 不管有无正常下载的页面,都下载完了最后扫描有哪些没有下载,然后主要针对它们多次试下载。 2) 下载,发现未正常连接或网页无法下载,判断并追加写入日志,最后重新下载日志中的网页。 根据上面模拟“多任务”原理,先下载,最后重新补那些没正常下载的页面,速度会非常快。 (以上只是个人想法,未经实验证明其可行性) [ Last edited by redtek on 2006-12-23 at 03:24 PM ] |
|
| 第15楼 ka56 | 发表于 2006-12-24 04:31 |
| 中级用户 发帖 129 积分 234 | |
Originally posted by redtek at 2006-12-23 15:22: 谢谢兄弟的耐心,单个BAT不怕慢,要快可以多开几个,,,主要得完善脚本..对吗? 我需要下载的网页确实有上万个,考虑可能有网页故障或IP被封等因素,多次下载一个页面是必要的,所以我很想学怎么循环...这样一个BAT运行完后,所有的任务也执行完了~~不用在重试了~~ [ Last edited by ka56 on 2006-12-23 at 03:36 PM ] |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |