【问题标题】:batch script: loop and labels批处理脚本:循环和标签
【发布时间】:2012-08-29 11:18:21
【问题描述】:

我正在尝试制作一个使用 wget 下载 5 个文本文件的脚本(Windows 中的批处理),并对每个文件执行一些操作,所以我想用这样的循环来做到这一点

set i=0
:begin
set /a i=%i%+1
if %i% equ 5 exit
wget ".....file1.txt"
goto operations

:operations
stuff
stuff
goto begin
  • 操作包括使用 grep 和 sed 从文本中获取信息并将其保存到文本中

好吧,它应该可以工作,但这需要很多时间,我希望批处理以一种有效的方式完成,因为这样它会下载一个(需要一些时间)并执行操作。 我想做的是让它成为一个多线程的,我的意思是让它同时做这5个文件(下载+操作)。

谢谢

【问题讨论】:

    标签: multithreading batch-file wget simultaneous-calls


    【解决方案1】:

    如果您将 wget + 处理的实际过程设为单独的批处理文件,则可以“启动”批处理文件,该批处理文件会将其作为子进程生成并在您的主批处理文件中继续,例如。

    batchfile1.cmd
    <do something really long>
    
    batchfile2.cmd
    
    for %%N in (a b c d e f g) do start batchfile1.cmd %%n
    

    你最终会同时运行 a-g - 但是你不能轻易地知道什么时候都完成了。

    【讨论】:

    • 有没有办法调用一个标签 5 次,比如 start :label & start label ---- ?
    • No.. 批处理文件本身是单线程的,因此您需要生成其他批处理文件(或使用其他参数调用相同的批处理文件并酌情在内部反弹)
    猜你喜欢
    • 2011-02-05
    • 1970-01-01
    • 2017-03-25
    • 2020-12-14
    • 1970-01-01
    • 2011-08-26
    • 2013-10-01
    • 2017-02-03
    • 2011-06-07
    相关资源
    最近更新 更多