你好。为了下载文件,我有时会使用一个 CMD 脚本来启动wget
并与scriptsplit.vbs
. 该程序将 lst.txt 文件中的链接列表下载到一个具有随机名称的新文件中,达到 399MB 的配额后,创建并填充一个新文件。
文件“start.cmd”
"G:\_wget\wget.exe" --user-agent="Mozilla/5.0 (Windows NT 5.1; rv:26.0) Gecko/20100101 Firefox/26.0 SeaMonkey/2.23" --header="Accept-Language: ru-RU,ru;q=0.9,en;q=0.8" --wait=1 --rejected-log=_ERROR.LOG -i lst.txt -O- | cscript scriptsplit.vbs
文件“scriptsplit.vbs”
SplitSize = 399 * 1024 * 1024
Set FSO = CreateObject("Scripting.FileSystemObject")
Set stdin = fso.GetStandardStream(0)
Count = 0
Set CurrFile = FSO.CreateTextFile("lst" & CStr(Year(Date())) & "-" & Right("0" & CStr(Month(Date())), 2) & "-" & Right("0" & CStr(Day(Date())), 2) & "_" & Replace(Time,":","-") & Count & ".htm",1)
Do Until stdin.AtEndOfStream
CurrFile.Write stdin.Read(1024)
Size = Size + 1024
If (Size => SplitSize) Then
Count = Count + 1
CurrFile.Close
Set CurrFile = FSO.CreateTextFile("lst" & CStr(Year(Date())) & "-" & Right("0" & CStr(Month(Date())), 2) & "-" & Right("0" & CStr(Day(Date())), 2) & "_" & Replace(Time,":","-") & Count & ".htm",1)
Size = 0 : Data = ""
End If
Loop
CurrFile.Close
问题是是否可以更改下载条件:这个配额功能是针对下载的链接数,因此创建一个新文件不是取决于文件的大小,而是取决于下载的链接数。因为否则必须在进一步处理之前组合 HTML 文件,因为它们在随机位置被破坏,此外有时文件编码已损坏。
要解决此任务,您不必立即将读取的部分写入输出文件,而是将其放在一个变量中,然后从变量中一次选择一个链接并将它们发送到目标文件。当一个链接仍然存在时,将下一部分读入变量。当达到设定的链接数时,生成一个新文件。
例如,它会是这样的: