Board logo

标题: [特效代码] BAT批处理wget下载问题,请大神给个思路 [打印本页]

作者: dailyad    时间: 2020-5-13 19:37     标题: BAT批处理wget下载问题,请大神给个思路

先谢谢了。
  1. echo on
  2. wget.exe -i 1.txt -nc -c -t2 -T 60 -P ./Download
复制代码
用批处理代码批量下载小型文件,只有几kb,由于是外网问题,常常有无法下载的,由于待下载文件超级多,近十万个。
可不可以修改以下代码,使未下载的链接用新文件输出。下次就只运行新文件就行了,这样节省时间。
下载不了的代码
HTTP request sent, awaiting response... 500 Internal Server Error
2020-05-13 19:23:58 ERROR 500: Internal Server Error.
还有404
作者: xp3000    时间: 2020-5-13 21:57

这个我去下别人网站mp3,下载了差不多70G,发现有的没下载完就断了,但是名称不会变,最好是先下载为别的类型完了改名回来下,
还有次是网页突然停电,这下惨了,刚刚还批量替换内容呢,名称顺序乱的,下载的文件也是别人服务器储存的时间,这下彻底找不到哪个是最后下载半截的了
作者: bailong360    时间: 2020-5-13 22:23

换 aria2c 吧,支持断点续传并且不会重复下载文件
作者: netdzb    时间: 2020-5-13 23:28

回复 1# dailyad

还可以试一下curl
作者: wujunkai    时间: 2020-5-14 06:36

回复 4# netdzb


    curl可以下载二进制文件吗?
作者: dailyad    时间: 2020-5-14 08:40

多谢各位热心的大咖,我的意思要备份未下载成功的链接,以免再次刷新下载,虽说wget也支持断点下载及设置不下载已有文件,问题是刷新一次下载耗时,不如只刷为下载成功的链接,或者在少数几个链接的情况下可以手动想办法搞定
作者: wujunkai    时间: 2020-5-14 13:09

回复 6# dailyad


    可是wget的提示里没有出现失败的链接啊,不如吧1.txt的内容提取出来一个个喂给wget,如果失败就储存
作者: dailyad    时间: 2020-5-14 16:19

回复 7# wujunkai
这个思路可以有,多谢
作者: xp3000    时间: 2020-5-14 17:39

本帖最后由 xp3000 于 2020-5-15 07:48 编辑

上面说的对,用第三方工具aria2c下载吧,
…………
昨天注释有误,已经修正,
aria2c的-s不是任务数,是线程。
默认s 5下载5线程,我刚刚下载网页多了被网站屏蔽了
缺少的文件下载后放入C:\Windows\System32

这个单个下载
  1. @echo off
  2. title aria2c下载工具  ^&  grep输出未下载链接
  3. CD /D "%~dp0"
  4. @for /f "delims=" %%a in ('dir /a/s/b/on *.txt') do (md "%%~na" & echo 正在后台下载,不要关闭……
  5.     @for /f  "tokens=*" %%i in (%%a) do (
  6.     aria2c.exe -c -s 10 -d "%%~na" %%i|grep -Po "mERROR.+URI=[^\r\n]+"|grep -oP "[^=]+$">>%%~na未下载.log
  7.     ping -n 5 127.0>nul
  8.     )
  9. )
复制代码
这个批量下载
  1. @echo off
  2. title aria2c下载工具  ^&  grep输出未下载链接
  3. CD /D "%~dp0"
  4. echo 准备同时下载5个链接……
  5. echo 部分网站批量下载会拉黑……
  6. echo 碰到此类网站直接关闭退出……
  7. pause
  8. cls
  9. @for /f "delims=" %%a in ('dir /a/s/b/on *.txt') do (md "%%~na" & echo 正在后台批量下载,不要关闭……
  10.     aria2c.exe -c -s 10 -d "%%~na"  -j 5 -i %%a|grep -Po "mERROR.+URI=[^\r\n]+"|grep -oP "[^=]+$">>%%~na未下载.log
  11.     )
  12. )
复制代码

作者: xp3000    时间: 2020-5-15 10:18

findstr输出,不用多下载一个grep
  1. @echo off
  2. title aria2c下载工具  ^&  findstr输出未下载链接
  3. CD /D "%~dp0"
  4. @for /f "delims=" %%a in ('dir /b/a-d/oN *.txt') do (md "%%~na" & echo 正在后台单链接下载,不要关闭……
  5.     @for /f "tokens=* delims==" %%i in (%%a) do (echo;正在下载:%%i&set "fn=%%i"&set fn=!fn:^[=!!fn:^]=!
  6.     aria2c.exe -c -s 5 -d "%%~na" %%i|findstr /i /r "mERROR.*URI=[^\r\n]*"
  7.     echo %%i>>%%~na未下载.log
  8.     ping -n 5 127.0>nul
  9.     )
  10. )
复制代码

作者: netdzb    时间: 2020-5-15 10:21

回复 5# wujunkai

这个我没用过,其余2个都有用过。
作者: xp3000    时间: 2020-5-15 10:37

findstr不怎么会用,感觉也不好有
作者: dailyad    时间: 2020-5-16 10:33

感谢以上各位,利用论坛整合了一个分步处理bat文件,看起来有用,每一次运行生成两个TXT,下次要运行就直接修改关键地方的TXT。
应该还可以优化的 ,然后不知道怎么优化了
  1. @echo ********************************************
  2. @echo * 欢迎使用多组合批量下载系统!@by DAILYAD*
  3. @echo ********************************************
  4. @echo * 用法:
  5. @echo * 1.取要下载文件的关键词,每一个关键词必须唯一,和要下载的文件一一对应。
  6. @echo * 2.将要下载的关键词输入到1.txt,每行一个关键词。
  7. @echo * 3.自行建立Download文件夹
  8. @echo * 4.以上和wget.exe在同一文件夹
  9. @echo *************************************************
  10. @pause
  11. echo on
  12. for /f "delims=" %%a in ('type "1.txt"') do start /b "" "wget.exe"  -nc -c -t0 -T120 "网址/%%a.文件类型" -P "./Download"
  13. @echo ********************************************
  14. @echo * 统计已下载文件*
  15. @echo ********************************************
  16. for /f "delims=" %%i in ('dir/s/b *.文件类型')do echo %%~ni>>2.txt
  17. @echo ********************************************
  18. @echo * 对比文件,导出未下载成功文件*
  19. @echo ********************************************
  20. findstr /v /x /g:2.txt 1.txt > 3.txt
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2