标题: [文件操作] 【已解决】批处理+wget文件处理问题 [打印本页]
作者: 447219071 时间: 2023-7-15 22:35 标题: 【已解决】批处理+wget文件处理问题
本帖最后由 447219071 于 2023-7-19 21:29 编辑
- if not exist B.txt wget.exe -q -t 1 -O B.txt -N http://www.a.com/B.txt ::下载最新版B.TXT,如果电脑上的B.TXT文件更新,不下载不替换
- ping -n 3 127.0.0.1>nul ::等三秒钟让上一条命令执行下载完,不然依然查不到已经下载好B.TXT
- if not exist B.txt (wget.exe -q -t 1 -O B.txt -N http://www.b.com/B.txt) else (goto bed) ::检查是否存在B.TXT,不存在则执行该条命令
- ping -n 3 127.0.0.1>nul ::再等三秒钟让上一条命令执行下载完,不然依然查不到已经下载好B.TXT,解决如第一个网址下载的文件没有或打不开,进行该条命令补充下载
- if not exist B.txt (wget.exe -q -t 1 -O B.txt -N http://www.c.com/B.txt) else (goto bed) ::检查是否存在B.TXT,不存在则执行该条命令
- b.txt
- :bed
- echo 。。。OK
复制代码
上述代码看似没问题,但一旦前面的网站打不开或无B.TXT时就会自动生成一个B.TXT空文件,导致后面的命令全部失效
目的:如不存在,执行下载命令,在多个下载地址中自更新下载文本文件,如第一个失效,则用第二个下载,第二个不行就用第三个
望高手,大大们指教,谢谢
作者: dimo 时间: 2023-7-16 00:06
首先可以试试errorlevel,看一下wget能否给出一个errorlevel(套在if里是否需要延迟扩展?)
如果能判断errorlevel就简单很多。
另外可以对b.txt增加判定条件,比如在b.txt存在的前提下,再检查B的大小:- for /f "delims=" %%i in ("b.txt") do if %%~zi EQU 0 echo b.txt大小为0,下载失败
复制代码
检测到下载失败再进行下一个地址下载。
作者: 447219071 时间: 2023-7-16 08:28
回复 2# dimo
用环境变量似乎行得通,我是小白,麻烦高手展示一下,谢谢
作者: 77七 时间: 2023-7-16 09:33
- @echo off
- if not exist "B.txt" (
- for %%a in (
- http://www.a.com/B.txt
- http://www.b.com/B.txt
- http://www.c.com/B.txt
- ) do (
- wget.exe -q -t 1 -O "B.txt" -N %%a
- timeout 3 1>nul
- find /v "" <"B.txt" 1>nul 2>nul && goto :bed
- del "B.txt" 2>nul
- )
- ) else (
- goto :bed
- )
- echo fail
- pause & exit
- :bed
- echo ok
- pause
复制代码
作者: 77七 时间: 2023-7-16 09:55
不怎么用wget ,可以试试aria2c (需要下载安装),下载失败不会产生空文件,也不用加等待命令
作者: 447219071 时间: 2023-7-16 10:06
回复 5# 77七
能否检测文件是否最新吗?这个下载软件?谢谢
作者: 77七 时间: 2023-7-16 10:13
回复 6# 447219071
“最新”是根据什么判断?
作者: 447219071 时间: 2023-7-16 10:32
本帖最后由 447219071 于 2023-7-16 10:33 编辑
回复 7# 77七
本地电脑的B.TXT文件的创建日期,如果网上的更新则替换,否则不执行,WGET有这个参数 -N
作者: 77七 时间: 2023-7-16 10:59
回复 8# 447219071
我不是很明白这个,既然wget自带了,是不是不用1楼或者4楼的 if exist 判断本地是否存在?
作者: 447219071 时间: 2023-7-16 11:09
本帖最后由 447219071 于 2023-7-16 11:19 编辑
回复 9# 77七
对哦,确实不必查询是否存在,-N应该是文件修改日期,我说错了
如果aria2c能有比较文件修改日期的参数就完美了,看样子只能用WGET加参数 -N配合等下载下来再比较以决定是否替换了
作者: Batcher 时间: 2023-7-16 22:01
回复 3# 447219071 - wget.exe -q -t 1 -O B.txt -N http://www.a.com/B.txt
- if errorlevel 1 (
- wget.exe -q -t 1 -O B.txt -N http://www.b.com/B.txt
- if errorlevel 1 (
- wget.exe -q -t 1 -O B.txt -N http://www.c.com/B.txt
- )
- )
- find /v "" < B.txt 1>nul 2>&1
- if errorlevel 1 (
- echo 下载失败
- goto :End
- ) else (
- goto :bed
- )
-
- :bed
- echo 。。。OK
-
- :End
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |