RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 809771
Accepted
iskander1220
iskander1220
Asked:2020-04-05 10:56:40 +0000 UTC2020-04-05 10:56:40 +0000 UTC 2020-04-05 10:56:40 +0000 UTC

VBScript:更改下载条件

  • 772

你好。为了下载文件,我有时会使用一个 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 文件,因为它们在随机位置被破坏,此外有时文件编码已损坏。

vbscript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Akina
    2020-04-05T13:34:03Z2020-04-05T13:34:03Z

    要解决此任务,您不必立即将读取的部分写入输出文件,而是将其放在一个变量中,然后从变量中一次选择一个链接并将它们发送到目标文件。当一个链接仍然存在时,将下一部分读入变量。当达到设定的链接数时,生成一个新文件。

    例如,它会是这样的:

    Const ReferencesCount = 1000000 ' ссылок на файл '
    Dim Buffer ' буфер приёма и парсинга ссылок '
    Dim NextRef ' буфер под выделение ссылки '
    Dim RefCount ' количество ссылок, записанных в файл '
    Dim FSO,stdin,Count,CurrFile ' переменные из исходного кода '
    
    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 
        Buffer = Buffer & stdin.Read(1024)
        NextRef = ExtractRef(Buffer)
        Do Until NextRef = ""
            CurrFile.Write NextRef & vbNewLine ' по одной ссылке на строку '
            RefCount = RefCount + 1
            If RefCount>= ReferencesCount Then
                CurrFile.Close
                Count = Count + 1
                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) 
                RefCount = 0
            End If
            NextRef = ExtractRef(Buffer)
        Loop
    Loop 
    CurrFile.Close
    
    Function ExtractRef(ByRef Buffer)
    Dim Border ' Граница первой ссылки в буфере '
    
    Buffer = Trim(Buffer)
    Border = Instr(Buffer, " ") ' если разделитель ссылок - пробел '
    If Border = 0 Then 
        ExtractRef = ""
    Else
        ExtractRef = Trim(Left(Buffer, Border))
        Buffer = Mid(Buffer, Border)
    End If
    End Function
    
    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5